如何在 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 的单个文档=].