如何在单次查询中只删除mongodb中的空值行[重复]。

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

我有一个收藏 检验 与一个记录。

[{ number:"1524",
name:null,
cat_id:"126842"},
{number:"456",
name:null,
cat_id:null }]

如何删除整个行有空值这样的。

[{ number:"1524",
 cat_id:"126842" },
{ number:"456"}]

我试过这样做,但是整个记录都被删除了,而不仅仅是行。

collection.deleteMany( { $or: [{cat_id : null },{ name : null }]

需要在一个查询中删除多个变量。

MongoDB 4.0版本

node.js mongodb mongoose mongodb-query pymongo
1个回答
2
投票

在MongoDB中,$unset操作符用来删除一个特定的字段。

你可以尝试使用下面的命令来删除空的字段。

collection.updateMany({name: null}, { $unset : { name : 1 }})

该命令将删除 名称 名的所有文件中的字段。null. 你也可以对cat_id执行类似的命令。

编辑: 根据我在另一个问题中得到的回答,你也可以用下面的方法在一个命令中做同样的事情----。

collection.updateMany({
  $or : [{
    name : null
  }, {
    cat_id : null
  }]
}, [{
  $set: {
    name : { $ifNull : ["$hobby", "$$REMOVE"] },
    cat_id : { $ifNull : ["$Roll_no", "$$REMOVE"] }
  }
}]
);

但是,这只能在MongoDb V4.2及以上版本中进行。您也可以查看 这个 的另一种方法。

希望对大家有所帮助!

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