nodejs mongodb执行不同的查询取决于集合是空的不是[重复]

问题描述 投票:0回答:1

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

这是代码:

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();

    });
});

我怎样才能做到这一点?

node.js mongodb
1个回答
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,因为它们使代码看起来更清晰。

© www.soinside.com 2019 - 2024. All rights reserved.