[英]Retrieve the first item of an array in a sub-document without getting other sub-documents
在MongoDB中-如何仅检索属性中数组的第一项?
我有一个嵌套的文档,并使用$text
查询(但这没关系,普通查询也不起作用)
我的文件结构:
{
"_id": ObjectId("...."),
"propA": {
"prop1": [
{ ... }, // this is what I want to see
{ ... },
...
],
"prop2": { ... },
"prop3": { ... },
...
},
"propB": {
"prop1": { ... }, // +this, but that's not a problem
"prop2": { ... },
"prop3": { ... },
...
},
"propC": { ... },
...
}
当我跑步时
collection.find({}, { "propA.prop1": 1, "propB.prop2": 1 });
我在propA.prop1
获得了完整的数组。 当我跑步时
collection.find({}, { "propA.prop1": {$slice: 1}, "propB.prop2": 1 });
我仅获得propA.prop1
的第一项,但也得到propA
内部的所有其他项(如propA.prop2
, propA.prop3
,...)
我想以某种方式组合这两个查询,但无法弄清楚(查询代码后除外)。
您可以通过在投影中包含第二个不存在的propA
字段来解决此问题:
collection.find({}, {
"propA.prop1": {$slice: 1},
"propA.nonExistentField": 1,
"propB.prop2": 1
});
有点奇怪,但是可以。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.