使用以前查询结果中的字段在mongodb中的另一个查询中

时间:2013-08-20 13:17:53

标签: mongodb

我有以下查询,在第二个查询中,我为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的数据。怎么了?

2 个答案:

答案 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})