MongoDB 删除document中的key

需求

假设当前Document中的实体为以下形式:

1
2
3
4
5
{
  "_id" : 1234,
  "name" : "Chris",
  "description" : "Awesome"
}

需要将其调整成以下形式:

1
2
3
4
{
  "_id" : 1234,
  "name" : "Chris"
}

操作方法

通过调用update方法,指定$unset来删除属性。

1
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} });

update方法默认情况下只会更新第一个匹配,如果对所有符合条件的记录做修改,则需要使用以下方法:

1
db.collection_name.update({}, { $unset : { description : 1} }, false, true);

其中第三个参数为upsert,这个参数是个布尔类型,默认是false。当它为true的时候,update方法会首先查找与第一个参数匹配的记录,在用第二个参数更新之,如果找不到与第一个参数匹配的的记录,就插入一条(upsert 的名字也很有趣是个混合体:update+insert)。

第4个参数设置为true表示更新所有符合条件的记录。