[英]Checking 2 fields in array and combine two arrays to get single array Mongodb
我有一個收藏
{
_id:"123",
obj1:[{defaultNo:1,fine:100},{defaultNo:3,fine:10}],
obj2:[{default:1},{default:2},{default:3}]
}
我嘗試過類似的操作,但被卡住了
db.collection.aggregate([
// Match possible documents
{ "$match": {
"_id" : "123"
}},
{ "$unwind": "$obj1" },{
"$group": {
"_id": {
"document": "$_id",
"objfirst" : "$obj1.defaultNo",
"objlast":"$obj2"
},
} } ])
這給了我一個結果
"_id" : {
"document" : "123",
"objfirst" : "1",
"objlast" : [{default:1},{default:2},{default:3}]
}, "_id" : {
"document" : "123",
"objfirst" : "2",
"objlast" : [{default:1},{default:2},{default:3}]
},
但是我一直在尋找這種類型的結果,例如將兩個數組與字段值合並
{
_id:"123",
object:[{default:1,fine100},{default:2,fine:false},{default:3,fine:10}]
}
我建議您看一下$concatArrays
運算符,該運算符確實在尋找您想要的東西。
如果您在Shell中執行以下查詢,
db.collection.aggregate([
{$match:{_id:"123"}},
{$project:{object:{$concatArrays:["$obj1","$obj2"]}}}
])
輸出將是(使用樣本輸入文檔與您期望的輸出緊密匹配)
{
"_id" : "123",
"object" : [
{
"default" : 1.0,
"fine" : 100.0
},
{
"default" : 3.0,
"fine" : 10.0
},
{
"default" : 1.0
},
{
"default" : 2.0
},
{
"default" : 3.0
}
]
}
更新:
向聚合管道添加了$match
以匹配OP的嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.