我有以下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"
}]
}
不确定这是否可行。
提前致谢。
答案 0 :(得分:3)
您可以使用$
位置投影运算符执行此操作,该运算符标识查询对象中匹配的数组元素的索引:
db.test.find(
{'Data.Name': {$in: ["Firstname", "Section 2 Item"]}},
{Section: 1, 'Data.$': 1})