0


我想修复 MondoDb 文档中的特定子文档值,因此无法在下次更新或任何其他可以修改文档的 MongoDb 操作时对其进行修改。
例如,如果插入像下面这样的文档,我会喜欢“eyesColor”值不能更改。
{
"id" : "someId",
"name": "Jane",
"eyesColor" : "blue"
}

可能的更新是:
{
"id" : "someId",
"name": "Amy",
"eyesColor" " : "green"
}
这次更新后我需要的结果是 :
{
"id" : "someId",



我想这样做是因为我正在创建的项目中不存在使用 $set 和 $unset 运算符的可能性。在更新之前读取现有文档以获取子文档的值(“eyesColor”)将降低我正在处理的应用程序的性能。

实际上,我需要的约束类似于集合上的固定大小(上限集合)。不同之处在于它位于子文档而不是集合上,并且位于子文档中包含的值而不是大小上。

这种类型的约束有什么解决方案吗?

4

1 回答 1

0

MongoDB 中没有约束(唯一的例外:唯一索引)。无法在数据库层将字段设为“只读”。

当您想使用 upsert ( db.collection.updatewith upsert: true) 在插入新文档时添加某些字段但在更新现有文档时不影响这些字段时,您可以将这些字段放在$setOnInsert-operator后面。

于 2013-11-21T14:56:52.037 回答