nodejs mongodb根据收集是否为空执行不同的查询

时间:2019-04-04 09:58:45

标签: node.js mongodb

我在nodejs项目中使用mondodb,我需要检查集合是否为空,并取决于结果的使用和查询或其他变体。

这是代码:

const { MongoClient, ObjectId } = require('mongodb');
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("lidarDb");

    // This is the part I need help with
    if (mycollection is empty) {
        var myquery = { query variation 1 }
    } else {
        var myquery = { query variation 2 }
    }

    dbo.collection("mycollection").insertOne(myquery, function(err, obj) {
        if (err) throw err;
        if(obj) {
            res.send(true);
        } else {
            res.send(false);
        }

        db.close();

    });
});

我该怎么做?

1 个答案:

答案 0 :(得分:0)

编辑:

@Neil Lunn是正确的,并且不应该使用.count ,因为它已被弃用。

.countDocuments可以替换版本4.0.3中的.count,得到相同的结果,但使用聚合而不是数据库中的元数据。

原始答案:

如果您希望自己的代码具有未来性,请不要使用它

您可以使用.count

对集合中的文档进行计数
dbo.collection("mycollection").count({}, (err, count) => {
  if (count === 0) {
    // var myquery = { query variation 1 }
  } else {
    // var myquery = { query variation 2 }
  }
  ...
});

还要研究Promises,因为它们会使代码看起来更简洁。