0

有 5 个更新操作符:$inc、$rename、$setOnInsert、$set 和 $unset

当使用 upsert 选项设置为 true 进行更新时,对于具有此更新查询的字段,新创建的文档的值是多少(考虑到它不存在,因此,对其进行更新):

{$inc: {age: 1}}

那么新插入的文档将具有值 1?因为它以前不存在。我对吗?

如果运算符是$rename,那么该字段的值是null多少?或者该字段不会被创建为要插入的新文档的一部分?

更新:

如果更新查询是重命名更新:

db.students.update( { _id: 1 }, { $rename: { 'nickname': 'alias', 'cell': 'mobile' } } )
4

2 回答 2

1

我在 RockMongo 中执行了以下步骤,应该可以回答您关于 $rename 的问题:

  1. 在新的数据库/集合中,插入一个文档 {"a": 1}
  2. 用 "$rename": {"b": "c"} 更新它
  3. 它说“1 行可能会受到影响”。
  4. 回到集合,仍然只有一个数据:{“a”:1}(_id省略)。所以是的,它什么也不做。

你可以自己试试:)

于 2013-06-10T08:14:31.090 回答
0

文档

当重命名单个字段并且现有字段名称引用不存在的字段时,$rename操作员什么也不做。

当重命名多个字段并且所有旧字段名称都引用不存在的字段时,$rename操作员什么也不做。

当重命名多个字段并且某些但不是所有旧字段名称引用不存在的字段时,$rename操作员执行以下操作:

  • 将存在的字段重命名为指定的新字段名称。
  • 忽略不存在的字段。
于 2013-06-10T08:13:20.730 回答