我有以下查询,在第二个查询中,que.name 为空。
var que = db.que.find({ _id: u.que_id }, {name:1})
db.documents.update(u, {$set: {que_name: que.name}})
我可以看到 que 的数据如下
{ "_id" : "general", "name" : "General" }
但没有 que.name 的数据。怎么了?
我有以下查询,在第二个查询中,que.name 为空。
var que = db.que.find({ _id: u.que_id }, {name:1})
db.documents.update(u, {$set: {que_name: que.name}})
我可以看到 que 的数据如下
{ "_id" : "general", "name" : "General" }
但没有 que.name 的数据。怎么了?
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
db.collection.find 返回一个游标。尝试使用 findOne()
var que = db.que.findOne( { _id: u.que_id }, {name:1})