如何 return mongodb 中特定字段的值

How to return specific field's value in mongodb

如何 return MongoDB 中特定文档的特定值?例如,我有一个如下所示的架构:

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

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

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

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

我希望根据分配的值查询 return truefalse

有人可以帮忙吗?谢谢!

MongoDB 总是查询 return 文档对象,而不是单个值。因此,一种方法是使用 shell 代码,例如:

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

请注意使用 findOne 而不是 find,这样您就可以使用单个文档而不是使用 find.[=14= 获得的光标]

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

这样使用:

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

结果将是:10