如何在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});
我希望查询返回true
或false
,具体取决于分配的值。
有人可以帮忙吗?谢谢!
答案 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')
结果将是:1
或 0