在MongoDb中返回没有键的对象

时间:2018-11-13 21:21:18

标签: mongodb mongodb-query

我正在使用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查询?

1 个答案:

答案 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",
        }
    }
])