我在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();
});
});
我该怎么做?
答案 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,因为它们会使代码看起来更简洁。