我有以下查询,在第二个查询中,我为que.name获取null。
var que = db.que.find({ _id: u.que_id }, {name:1})
db.documents.update(u, {$set: {que_name: que.name}})
我可以看到如下的数据
{ "_id" : "general", "name" : "General" }
但没有que.name的数据。怎么了?
答案 0 :(得分:2)
find
将光标返回到匹配的文档。所以que
不是单个文档 - 它是游标。游标没有字段name
- 这就是为什么你没有que.name
的数据。光标指向您找到的文档(是的,可能有多个文档)。如果您将迭代光标,您将获得每个文档。只是为了显示光标:
var que = db.que.find({ _id: u.que_id }, { name: 1 }) // que is a cursor
que.forEach(function(d) { print(d.name); })
如果您想获取文档,请使用findOne
方法,该方法会返回一个符合您搜索条件的文档:
var que = db.que.findOne({ _id: u.que_id }, { name: 1 }) // now que is document
que.name // prints name value
答案 1 :(得分:1)
db.collection.find返回一个游标。尝试使用findOne()
var que = db.que.findOne( { _id: u.que_id }, {name:1})