MongoDB - 从单个数组元素中删除一个属性

7
我该如何在Mongo控制台中取消单个数组元素的属性?例如,我如何从time [1]中取消junk属性?请使用以下命令:db.collection.update({条件},{ $unset: { "time.1.junk": "" } })。
{
  "_id" : ObjectId("4d525ab2924f0000000022ad"), 
  "name" : "hello", 
  "time" : [
      {
          "stamp" : "2010-07-01T12:01:03.75+02:00",
          "reason" : "new"
      },
      {
          "stamp" : "2010-07-02T16:03:48.187+03:00",
          "reason" : "update",
          "junk"  : "yes"
      },
      {
          "stamp" : "2010-07-02T16:03:48.187+04:00",
          "reason" : "update"
      },

   ]
}
1个回答

12

这应该就能解决问题:

db.coll.update({"time.junk": "yes"}, {$unset: {"time.$.junk": 1}});

请查看点表示法


实际上它将删除该值,但仅从子文档的第一个出现,因为“位置$运算符充当匹配查询文档的第一个元素的占位符”(https://docs.mongodb.org/manual/reference/operator/update/positional/#query)另外,请参见Hassek的hack:https://dev59.com/questions/zGIj5IYBdhLWcg3wuXaN - Patrycja K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接