【发布时间】:2016-09-15 13:31:19
【问题描述】:
我正在查询一个带有嵌套项目数组的 json 结构。我想返回整个结构,但只包括匹配查询条件的嵌套项目。
所以 - 样本结构是
{
parentId:1,
items: [
{
field1: 1
field2: 2
},
{
field1: 3
field2: 4
}
]
}
我想用这样的东西查询 ->
db.getCollection('mycollection').find({"items.field1":1, "items.field2":2})
这可行,但它也带回了第二个子项目,我希望它实际返回的是这个 ->
{
parentId:1,
items: [
{
field1: 1
field2: 2
}
]
}
我已经能够在 MongoDB 本身中创建一个查询来实现我想要的 ->
db.getCollection('mycollection').aggregate(
{ $unwind : "$items" },
{ $match : {
"items.field1": 1,
"items.field2": 2,
}}
)
但是当尝试使用 mgo.v2 进行设置时,它被证明有点麻烦。 collection.Find 方法似乎不喜欢 $unwind 命令,并且似乎无法获得正确的语法以使其与 Pipe 方法一起使用。
有人对如何创建它有任何建议吗?我可以只创建字符串并将其传递给执行吗?
【问题讨论】: