1

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、 ... など)

どうにかして 2 つのクエリを結合したいのですが、その方法がわかりませんでした (コードで取得した後を除く)。

4

1 に答える 1

2

propAプロジェクションに 2 つ目の存在しないフィールドを含めることで、これを回避できます。

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

少し奇妙ですが、うまくいきます。

于 2015-03-13T22:57:00.890 に答える