这个问题在这里已有答案:
我在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();
});
});
我怎样才能做到这一点?
编辑:
@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,因为它们使代码看起来更清晰。