如何在mongodb中返回特定字段的值

时间:2015-03-25 13:26:58

标签: mongodb mongodb-query

如何在MongoDB中返回特定文档的特定值?例如,我有一个模式如下:

{
"_id" : "XfCZSje7GjynvMZu7",
"createdAt" : ISODate("2015-03-23T14:52:44.084Z"),
"services" : {
    "password" : {
        "bcrypt" : "$2a$10$tcb01VbDMVhH03mbRdKYL.79FPj/fFMP62BDpcvpoTfF3LPgjHJoq"
    },
    "resume" : {
        "loginTokens" : [ ]
    }
},
"emails" : {
    "address" : "abc123@gmu.edu",
    "verified" : true
},
"profile" : {
    "companyName" : "comp1",
    "flagged" : true,
    "phoneNum" : "7778883333"
}}

我想返回并存储profile.flagged的值,专门用于_id : XfCZSje7GjynvMZu7的文档。到目前为止,我已经尝试过:

db.users.find({_id:'myfi3E4YTf9z6tdgS'},{admin:1})

db.users.find({_id: 'myfi3E4YTf9z6tdgS'}, {profile:admin});

我希望查询返回truefalse,具体取决于分配的值。

有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:2)

MongoDB查询始终返回文档对象,而不是单个值。所以一种方法是使用shell代码:

 
var flagged =
   db.users.findOne({_id: 'myfi3E4YTf9z6tdgS'}, {'profile.flagged': 1}).profile.flagged;

请注意使用findOne代替find,以便您只使用一个文档而不是使用find获得的光标。

答案 1 :(得分:1)

这里的正确答案是方法.distinct() (link here)

像这样使用它:

db.users.find({_id:'myfi3E4YTf9z6tdgS'},{admin:1}).distinct('admin')

结果将是:10