0

次のjsonドキュメントがあります。

{
    "Section": {
        "Name": "Section 1",
        "Description": "Section 1 information",
        "Icon": "test.png"
    },
    "Data": [{
        "Name": "Firstname",
        "Desc": "Users first name",
        "Type": "Text"
    }, {
        "Name": "Lastname",
        "Desc": "Users last name",
        "Type": "Text"
    }]
} {
    "Section": {
        "Name": "Section 2",
        "Description": "Section 2 information",
        "Icon": "test.png"
    },
    "Data": [{
        "Name": "Section 2 Item",
        "Desc": "Section 2 Desc",
        "Type": "Text"
    }]
}

Data.Name に基づいてアイテムを射影する方法があるかどうかを尋ねたかったのです。Section オブジェクトを含む ['Firstname', 'Section 2 Item'] の Data.Name を持つすべてのプロジェクトと同様です。したがって、結果は次のようになります。

{
    "Section": {
        "Name": "Section 1",
        "Description": "Section 1 information",
        "Icon": "test.png"
    },
    "Data": [{
        "Name": "Firstname",
        "Desc": "Users first name",
        "Type": "Text"
    }]
} {
    "Section": {
        "Name": "Section 2",
        "Description": "Section 2 information",
        "Icon": "test.png"
    },
    "Data": [{
        "Name": "Section 2 Item",
        "Desc": "Section 2 Desc",
        "Type": "Text"
    }]
}

これが可能かどうかはわかりません。

前もって感謝します。

4

1 に答える 1

3

$これは、クエリ オブジェクトで一致する配列要素のインデックスを識別する位置射影演算子を使用して行うことができます。

db.test.find(
    {'Data.Name': {$in: ["Firstname", "Section 2 Item"]}}, 
    {Section: 1, 'Data.$': 1})
于 2013-02-12T16:51:46.470 に答える