鉴于以下三个MongoDB集合:
db.array.insertMany([{
"field_1": [
{
"field_11": [{
"field_22": "Left field_23 Far",
"field_23": "Right field_23"
}],
"field_12": [{
"field_22": "Left field_23 Far",
"field_23": "Right field_23"
}],
"field_13": [{
"field_22": "Left field_23 Far",
"field_23": "Left field_23"
}],
"field_14": [{
"field_23": "Left field_23",
"field_22": "Left field_23 Far"
}]
}
]
}])
db.noArray.insertMany([{
"field_1":
{
"field_11": [{
"field_22": "Left field_23 Far",
"field_23": "Right field_23"
}],
"field_12": [{
"field_22": "Left field_23 Far",
"field_23": "Right field_23"
}],
"field_13": [{
"field_22": "Left field_23 Far",
"field_23": "Left field_23",
}],
"field_14": [{
"field_23": "Left field_23",
"field_22": "Left field_23 Far"
}]
}
}])
db.noArrayArray.insertMany([{
"field_1":
{
"field_11": {
"field_22": "Left field_23 Far",
"field_23": "Right field_23"
},
"field_12": {
"field_22": "Left field_23 Far",
"field_23": "Right field_23"
},
"field_13": {
"field_22": "Left field_23 Far",
"field_23": "Left field_23"
},
"field_14": {
"field_23": "Left field_23",
"field_22": "Left field_23 Far"
}
}
}])
我想分别查询每个集合并提取" field_11"。三个集合中每个集合的结果应该相同。预期的输出是:
"field_11": {
"field_22": "Left field_23 Far",
"field_23": "Right field_23"}
提前感谢您的技术专长
答案 0 :(得分:1)
您可以尝试以下每个集合的聚合查询。使用$arrayElemAt
将位置的数组字段转换为文档。
db.array.aggregate({$project:{_id:0, field_11:{$arrayElemAt:[{$arrayElemAt:["$field_1.field_11", 0]}, 0]}}});
db.noArray.aggregate({$project:{_id:0, field_11:{$arrayElemAt:["$field_1.field_11", 0]}}});
db.noArrayArray.aggregate({$project:{_id:0, field_11:"$field_1.field_11"}});
您还可以对所有馆藏使用db.collectionname.distinct("field_1.field_11")
获取如下所示的响应
[ { "field_22" : "Left field_23 Far", "field_23" : "Right field_23" } ]