MongoDB 查找检查是否存在未按预期工作

MongoDB Find Check If Exists not working as expected

本文关键字:工作 存在 查找 检查 是否 MongoDB      更新时间:2023-09-26

我有一个MongoDB查询,我在下面的NodeJS中运行,如果查询返回null,则不应该运行(doc):

collection.find( { name: "HOSTNAME_1" }, {$exists: true}).sort( { _id : -1 } ).limit(1).toArray(function(err, doc){
  if (doc) {
    res.write("event: add" + ''n');
    res.write("data: " + JSON.stringify(doc).substr(1,JSON.stringify(doc).length-2) + "'n'n");
  } else if (!doc) {
    console.log("No Entry Found!");
  }
});

出于某种原因,它仍然运行 doc 函数并在我卷曲它时输出它。

event: add
data:

如果我删除.toArray,我的查询如下所示:

db.clients.find( { name: "HOSTNAME_1" }, {$exists: true}).sort( { _id : -1 } ).limit(1)
它像它应该的那样返回

null,如果我对实际存在的项目运行它,它会像它应该返回{ "_id" : ObjectId("12345689randomnumber") }一样返回。 .toArray的某些东西正在屠杀我的{$exist:true}错误句柄。

如何在一个查询中"错误处理"它,而不必在查询之外编写 if else 语句?谢谢c:

我还没有测试过它,但查看文档,toArray 返回数组,我认为当没有结果时,它会返回一个空数组[]?如果是这种情况,那么if([])实际上在解释它的javascript中返回true。