如果在其他集合中找不到项目,则从集合中删除项目

时间:2017-09-04 09:30:19

标签: javascript node.js mongodb mongoose

我有两个集合,比方说carsowners。一个owner有很多carsone car仅属于one owner。当所有者去世时,我需要删除cars集合中的所有汽车。为了做到这一点,我在js中创建了脚本文件。 aliveOwnersundefined,最好的方法是什么?可以使用Mongoose吗?

MongoClient.connect(url, (err, db) => {
    assert.equal(null, err);
    console.log('Connected successfully to server');
    var aliveOwners = db.collection('owner').find({}); // TODO. it should get only owner ids
    console.log(aliveOwners); // undefined, mb cuz of non blocking
    db.collection('cars').remove({ ownerId: { $nin: aliveOwners } })); //TODO. delete cars if owner id does not exist in aliveOwners
});

1 个答案:

答案 0 :(得分:0)

find 方法是异步的,这就是 aliveOwners 未定义的原因。

您需要传递一个回调函数,该函数接收找到的文档并在那里继续您的代码:

db.collection('owner').find({}, function(err, aliveOwners) {
    console.log(aliveOwners);

    // Continue code
});

注意:由于汽车只属于一个所有者,因此最好将它们作为子文档包含在所有者文档中。