MongoDB 查詢以查詢包含句點的鍵的記錄?
要做到這一點,請使用 $addFields。在其中,使用 $objectToArray 來獲取鍵值形式的資料。結合 $filter 和 $indexOfBytes 來檢查其中是否包含任何帶點的鍵。
我們首先建立一個包含文件的集合 -
> db.demo364.insertOne(
... {
... "details" : {
... "details1.otherdetails.Name" : {"FirstName":"Chris" }
... }
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d485d0ada61456dc936d")
}
> db.demo364.insertOne(
... {
... "details" : {
... "details1.otherdetails.Name" : {"FirstName":"David" }
... }
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57d486d0ada61456dc936e")
}藉助 find() 方法從集合中顯示所有文件 -
> db.demo364.find();
這將生成以下輸出 -
{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }
{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }以下是查詢以查詢包含句點的鍵的記錄 -
> db.demo364.aggregate([
... {
... $addFields: {
... result: {
... $filter: {
... input: { $objectToArray: "$details" },
... cond: {
... $ne: [ { $indexOfBytes: [ "$$this.k", "." ] } , -1 ]
... }
... }
... }
... }
... },
... {
... $match: {
... $expr: {
... $ne: [ { $size: "$result" }, 0 ]
... }
... }
... },
... {
... $project: {
... result: 0
... }
... }
... ])這將生成以下輸出 -
{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }
{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }
廣告
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP