这是我的收藏结构。
{
"_id" : ObjectId("5685ea32ba5298688d27cceb"),
"name" : "t1",
"array" : [
{
"name" : "n1",
"innerArray1" : [
{
"id" : 1,
"name" : "aaa"
},
{
"id" : 2,
"name" : "bbb"
}
],
"innerArray2" : [
{
"id" : 1,
"name" : "cccc",
"active" : true
},
{
"id" : 2,
"name" : "dddd",
"active" : false
}
]
}
]}
在find()之后。我想只得到innerArray2。我试过这个
db.getCollection('Test').find({"name":"t1","array.name":"n1"},{"array.$":1})
{
"_id" : ObjectId("5685ea32ba5298688d27cceb"),
"array" : [
{
"name" : "n1",
"innerArray1" : [
{
"id" : 1,
"name" : "aaa"
},
{
"id" : 2,
"name" : "bbb"
}
],
"innerArray2" : [
{
"id" : 1,
"name" : "cccc",
"active" : true
},
{
"id" : 2,
"name" : "dddd",
"active" : false
}
]
}
]
}
但实际上我想从结果中删除innerArray1元素。这是我的期望。
{
"_id" : ObjectId("5685ea32ba5298688d27cceb"),
"array" : [
{
"name" : "n1",
"innerArray2" : [
{
"id" : 1,
"name" : "cccc",
"active" : true
},
{
"id" : 2,
"name" : "dddd",
"active" : false
}
]
}
]}
我该怎么做?
答案 0 :(得分:1)
我认为您可以使用db.getCollection('Test').find()
而不是db.getCollection('Test').findOne('innerArray2')
。