MongoDB 查詢以解開兩個陣列
解開,表示從輸入文件解構一個數組欄位,為每個元素輸出一個文件。
若要解開陣列,請在 MongoDB 聚合中使用 $unwind。我們首先使用文件建立集合 −
> db.demo387.insertOne(
... {
...
... "Name" : "101",
... "Details1" : [
... {Value:100, Value1:50, Value2:40},
... {Value:200},
... {Value:300}
... ],
... "Details" : [
... {Value:100, Value1:30, Value2:26},
... {Value:200},
... {Value:300}
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5d197022064be7ab44e7f8")
}藉助 find() 方法顯示集合中的所有文件 −
> db.demo387.find().pretty();
這將產生以下輸出 −
{
"_id" : ObjectId("5e5d197022064be7ab44e7f8"),
"Name" : "101",
"Details1" : [
{
"Value" : 100,
"Value1" : 50,
"Value2" : 40
},
{
"Value" : 200
},
{
"Value" : 300
}
],
"Details" : [
{
"Value" : 100,
"Value1" : 30,
"Value2" : 26
},
{
"Value" : 200
},
{
"Value" : 300
}
]
}以下是聚合包含多個數組的文件的查詢 −
> db.demo387.aggregate([
... { "$unwind": "$Details1" },
... { "$unwind": "$Details" },
... { "$match": { "$expr":
... { "$eq": ["$Details1.Value", "$Details.Value"] }
... }}
... ])這將產生以下輸出 −
{ "_id" : ObjectId("5e5d197022064be7ab44e7f8"), "Name" : "101", "Details1" : { "Value" : 100, "Value1" : 50, "Value2" : 40 }, "Details" : { "Value" : 100, "Value1" : 30, "Value2" : 26 } }
{ "_id" : ObjectId("5e5d197022064be7ab44e7f8"), "Name" : "101", "Details1" : { "Value" : 200 }, "Details" : { "Value" : 200 } }
{ "_id" : ObjectId("5e5d197022064be7ab44e7f8"), "Name" : "101", "Details1" : { "Value" : 300 }, "Details" : { "Value" : 300 } }
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP