使用MongoDB投影数组元素

时间:2013-02-12 16:04:32

标签: node.js mongodb

我有以下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来项目项目。就像使用['Firstname','Section 2 Item']中的Data.Name项目一样,包括Section对象。所以结果应该是:

{
    "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"
    }]
}

不确定这是否可行。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以使用$位置投影运算符执行此操作,该运算符标识查询对象中匹配的数组元素的索引:

db.test.find(
    {'Data.Name': {$in: ["Firstname", "Section 2 Item"]}}, 
    {Section: 1, 'Data.$': 1})