如何在 MongoDB 中的两个查询之间传递变量?
How to pass variable between two queries in MongoDB?
我想将一个集合的查询结果放在一个变量中,并将其用作另一个集合中查询的输入。查询如下所示:
查询 1:
var ID=db.User.findOne({Name:"Ivan"}, {ID: 1});
db.Artists.find({"Listeners.ID":ID});
查询 2:
var Friends=db.Users.find({Friends:x});
//Users.Friends is an array of interger identifier for User
db. Artists.find({"Listeners.ID":{$in:Friends}});
但它们都不起作用。怎么写才对?
查询 db.User.findOne({Name:"Ivan"}, {ID: 1});
没有 return 单个值,它 return 是文档,缩减为您请求的字段。你得到的是一个对象,有两个字段:_id
(因为你没有明确排除它)和 ID
(当它存在于文档中时)。您的 var ID
看起来像这样:
{
_id:ObjectId(<long hex string>),
ID:<value>
}
所以当你想通过ID值查询时,需要指定:
db.Artists.find({"Listeners.ID":ID.ID});
关于你的第二个查询:当你使用 find
而不是 findOne
时,你会得到一个游标对象,然后可以使用它来检索使用 cursor.next()
或 [=19 的单个文档=].
我想将一个集合的查询结果放在一个变量中,并将其用作另一个集合中查询的输入。查询如下所示:
查询 1:
var ID=db.User.findOne({Name:"Ivan"}, {ID: 1});
db.Artists.find({"Listeners.ID":ID});
查询 2:
var Friends=db.Users.find({Friends:x});
//Users.Friends is an array of interger identifier for User
db. Artists.find({"Listeners.ID":{$in:Friends}});
但它们都不起作用。怎么写才对?
查询 db.User.findOne({Name:"Ivan"}, {ID: 1});
没有 return 单个值,它 return 是文档,缩减为您请求的字段。你得到的是一个对象,有两个字段:_id
(因为你没有明确排除它)和 ID
(当它存在于文档中时)。您的 var ID
看起来像这样:
{
_id:ObjectId(<long hex string>),
ID:<value>
}
所以当你想通过ID值查询时,需要指定:
db.Artists.find({"Listeners.ID":ID.ID});
关于你的第二个查询:当你使用 find
而不是 findOne
时,你会得到一个游标对象,然后可以使用它来检索使用 cursor.next()
或 [=19 的单个文档=].