簡體   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