我有以下的Mongo数据库架构:
"Price_History" : [
{
"pr" : 62,
"BookingDateTo" : "2014-08-05T18:41:35",
"CollectionDate" : "2014-07-22T18:41:35",
"Vendor" : "test",
"BookingDateFrom" : "2014-08-04T18:41:35"
},
{
"BookingDateFrom" : "2014-08-04T23:01:37",
"BookingDateTo" : "2014-08-05T23:01:37",
"pr" : 62,
"Vendor" : "test",
"CollectionDate" : "2014-07-19T23:01:37"
}
],
这应该是:
"Price_History" : [
{
"pr" : 62,
"BookingDateTo" : "2014-08-05T18:41:35",
"CollectionDate" : "2014-07-22T18:41:35",
"Vendor" : "Trv",
"BookingDateFrom" : "2014-08-04T18:41:35"
},
如果Price_History.CollectionDate较旧,则查询应删除数组中的多个项目,然后2014-07-19T23:01:37 最后,查询应该更新所有文档
是可以的吗?
答案 0 :(得分:2)
你已经关闭了,但是你的钥匙中有一些不匹配的引号,这些内容正在破坏,应该是:
db.coll.update({},
{$pull: {Price_History: {CollectionDate: {$lte : "2014-07-19T23:01:37"}}}},
{multi: true})
我还将其更改为使用$lte
,因为您正在寻找超过"年龄超过"。使用$pull
代替$pullAll
也非常重要,因为$pullAll
只会在$pull
执行查询匹配时删除完全匹配的元素。