我在MongoDB中有一个具有以下结构的文档:
{
"k1": {
"k11": {<extended-sub-document-11>},
"k12": {<extended-sub-document-12>}
},
"k2": {
"k21": {<extended-sub-document-21>}
}
}如何在k12中获取整个对象?find机制要求我提供要匹配的值。但是在这里,我只想遍历路径k1/k12,并在这个键上检索整个子文档。
提前谢谢。
发布于 2020-05-12 20:33:48
在投影中使用.find(),可以尝试如下所示:
db.collection.find({}, { "k1.k12": 1})测试: 蒙古操场
注意:您只会得到k12的值/对象,但是由于它是嵌套在k1中的,所以在输出中可以看到与k1中的k12对象相同的结构,比如:{k1: {k12: {...}}}。
使用聚合的$project阶段:
db.collection.aggregate([ { $project: {_id :0, k12: "$k1.k12" } } ])测试: 蒙古操场
通过使用比.find()中的投影更强大的聚合.find(),您可以将字段的值分配给字段。在上面的查询中,我们使用k1.k12 (帮助获取引用字段的值)将k12字段的值赋值给字段。
https://stackoverflow.com/questions/61759899
复制相似问题