【问题标题】:Removing documents from one mongo collection that are matched in another collection从一个 mongo 集合中删除在另一个集合中匹配的文档
【发布时间】:2016-04-25 20:03:56
【问题描述】:

这可能是一个菜鸟问题,但是,我如何(有效地)从一个 mongodb 集合中删除与另一个集合中找到的文档匹配的所有文档?例如,使用 mongo shell,我们可以执行以下操作:

   db.getCollection('coll1').find({}).forEach( function(doc) {
     db.getCollection('coll2').remove( { name: doc.name, value: doc.value } );
   })

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    我会建议通过在 $in 数组中传递名称或 ID 的数组来使用带有移除的 $in 来执行此操作。

     db.getCollection('coll1').find({}).forEach( function(doc) {
       
       // create idsArray from the doc data and pass same in $in
       
         db.getCollection('coll2').remove({ id: { $in: idsArray });
       })

    我希望它会有所帮助。 :)

    【讨论】:

    • 我不确定这是否有帮助,@Lucky。随后的 remove 调用将对 doc.name 和 doc.value 执行查找匹配,这两个字段是我要消除的两个字段。我有一个自己的后续建议可以加快删除速度。如果我在coll2 上创建索引,那么删除中的查找操作会更快。 db.getCollection('coll2').createIndex({ name: 1 });
    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多