我正在使用MongoDb 3.2
说我在MongoDb集合中有此文档:
{
"_id" : ObjectId("5bad65b9777f6df3ce840fd1"),
"entryCode" : "1234",
"first" : {
"someKey" : "x",
"anotherKey" : "y"
},
"second" : {
"someKey" : "u",
"anotherKey" : "v",
}
}
当我执行以下查询时:
db.collection.find({entryCode:"1234"},{_id:0, first:1})
我得到以下返回结果:
{
"first" : {
"someKey" : "x",
"anotherKey" : "y"
}
}
但是,我想返回的是:
{
"someKey" : "x",
"anotherKey" : "y"
}
注意,我不不希望键first
成为返回值的一部分。只是其中的对象值。我可以使用哪种Mongo查询?
答案 0 :(得分:3)
您需要$replaceRoot运算符,请尝试:
db.col.aggregate([
{ $match: { entryCode:"1234" } },
{
$replaceRoot: {
newRoot: "$first"
}
}
])
编辑:在MongoDB 3.2中,您只能使用$project
并明确指定字段:
db.col.aggregate([
{ $match: { entryCode:"1234" } },
{
$project: {
_id: 0,
someKey: "$first.someKey",
anotherKey: "$first.anotherKey",
}
}
])