繁体   English   中英

检索子文档中数组的第一项,而无需获取其他子文档

[英]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.prop2propA.prop3 ,...)

我想以某种方式组合这两个查询,但无法弄清楚(查询代码后除外)。

您可以通过在投影中包含第二个不存在的propA字段来解决此问题:

collection.find({}, { 
    "propA.prop1": {$slice: 1},
    "propA.nonExistentField": 1,
    "propB.prop2": 1
});

有点奇怪,但是可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM