问题描述
{
"_id" : ObjectId("5f60ffc5aefd067a9ff9345c"),"_class" : "com.kalsym.smart.sms.data.MSASMS","number1" : NumberLong(923211105469),"numbers2" : [
{
"field1" : "20200915532E888","number2" : NumberLong(923018565627),"field2" : "abcd","datefield" : ISODate("2020-10-10T17:54:09.886Z")
},{
"field1" : "2020092570A6948","field2" : "efgh","datefield" : ISODate("2020-10-06T15:23:04.891Z")
},"field2" : "ijkl","datefield" : ISODate("2020-10-03T15:23:04.891Z")
}
],"optInCount" : 0
}
我要删除包含 datefield 值大于 2020-10-04
的数组索引执行命令文档后,必须像这样进行更新:
{
"_id" : ObjectId("5f60ffc5aefd067a9ff9345c"),"numbers2" : [
{
"field1" : "2020092570A6948","optInCount" : 0
}
解决方法
您可以使用updateMany()或update()
和$pull
删除匹配的记录表单数组,
db.collection.updateMany({},{
$pull: {
numbers2: { datefield: { $gt: ISODate("2020-10-04T00:00:00.000Z") } }
}
})