【问题标题】:mongodb pull all element from the arraymongodb 从数组中提取所有元素
【发布时间】:2011-12-22 02:05:08
【问题描述】:

假设我有以下架构:

"_id" : 1,
  "n" : [{
      "a" : ObjectId("4ef0ca414653b7c866040000"),
      "d" : new Date("Thu, 22 Dec 2011 04:53:56 GMT +04:00")
    }, {
      "a" : ObjectId("4ef0ca414653b9c866040000"),
      "d" : new Date("Thu, 22 Dec 2011 04:54:11 GMT +04:00")
    }, {
      "a" : ObjectId("4ef0ca424653b9c866040000"),
      "d" : new Date("Thu, 22 Dec 2011 04:54:30 GMT +04:00"),
   }]

我需要删除所有 n,其中 d 小于特定日期。

所以我想我可以通过以下方式做到这一点:

db.coll.update({
'_id': 1
},{
 $pullAll : {
  n.d : {
     $lte : new Date(2000, 10, 11)
   }
 }
})

但问题是,它不是这样工作的。 有什么建议吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    这不是 $pullAll 的工作方式。不能指定匹配条件,只能指定要删除的对象数组(需要完全匹配)。

    幸运的是,您可以改用 $pull(它确实接受匹配条件):

    db.coll.update({
    '_id': 1
    },{
     $pull : {
      n.d : {
         $lte : new Date(2000, 10, 11)
       }
     }
    })
    

    请注意,$pull 还会拉出 所有 个匹配的元素,而不仅仅是一个。

    这是admittedly a little confusing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多