Javascript collection.find()无法按预期工作-Node.js和MongoDB

Javascript collection.find()无法按预期工作-Node.js和MongoDB,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,下面的代码用于打印用户朋友的姓名: collection.findOne({name: "jason"}, function(err, document) { collection.find({ id: { "$in": document.friends}}).then(function(err, doc) { console.log(doc.name); if(err) { return console.log(err); } }) }

下面的代码用于打印用户朋友的姓名:

collection.findOne({name: "jason"},
function(err, document) {

collection.find({ id: { "$in": document.friends}}).then(function(err, doc)
{
  console.log(doc.name);

      if(err) {
      return console.log(err);
       }

    })

});
我100%确定该文档不是未定义的。我可以记录文档的信息,但它不会打印任何朋友的信息。也没有错误。它只是等待。你能告诉我问题出在哪里吗?谢谢

编辑: 我的用户如下所示:

{
  "id": 22448856945,
  "id_str": "224488456945",
  "name": "jason",
  "friends" : [954962638965, 3212489563163, 1659795263231]
}

Collection.find将返回一个结果数组。请尝试console.log(文档[0].name)。您必须在结果上循环。

Collection.find将返回一个结果数组。请尝试console.log(文档[0].name)。您必须循环查看结果。

问题是“document.freinds是什么样子的?”$in在这种情况下需要一个
ObjectId
数组。您需要向我们展示文档的实际外观。@NeilLunn正如您所说,
document.freinds
是jason朋友的ID数组。请给我们展示一个示例。和至少一个应匹配的文档。它可能是
\u id
而不是
id
,但猫鼬应该给它取别名,而不是在意。这是猫鼬吗?或者只是普通节点驱动程序?如果它是普通驱动程序,那么它会产生很大的不同。因此,行为基本上可以归结为“mongoose”和“node-native-driver”。但是相反,你应该向那些愿意帮助你的人澄清这一点。在所有回复的持续时间内,您在那里发布了相同的代码。请向他们澄清,而不是发布新问题。@NeilLunn我使用的是Monk,你认为这会有问题吗?问题是“document.freinds是什么样子的?”“
$in
在这种情况下需要一个
ObjectId
数组。您需要向我们展示文档的实际外观。@NeilLunn正如您所说,
document.freinds
是jason朋友的ID数组。请给我们展示一个示例。和至少一个应匹配的文档。它可能是
\u id
而不是
id
,但猫鼬应该给它取别名,而不是在意。这是猫鼬吗?或者只是普通节点驱动程序?如果它是普通驱动程序,那么它会产生很大的不同。因此,行为基本上可以归结为“mongoose”和“node-native-driver”。但是相反,你应该向那些愿意帮助你的人澄清这一点。在所有回复的持续时间内,您在那里发布了相同的代码。请与他们澄清,而不是发布新问题。@NeilLunn我在使用Monk,你认为这会是问题吗?嗯,有点。如果它实际上是“猫鼬”,那么它将返回一个结果数组。如果它实际上是普通节点驱动程序,那么它将完全返回其他内容。所以,实际上是在等待OP对这个问题的回答。但是他们还重复了他们现有的问题。嗯,有点。如果它实际上是“猫鼬”,那么它将返回一个结果数组。如果它实际上是普通节点驱动程序,那么它将完全返回其他内容。所以,实际上是在等待OP对这个问题的回答。但是他们还重复了他们现有的问题。