我正在尝试配置PutMongo(1.7.0)处理器对集合进行upsert。我收到此错误:
这是我的PutMongo配置:
这是传入的流文件的样子:
{"_id": {"compositeOne":"co", "compositeTwo": "ctr"}, "value": true}
流文件具有以下_id属性:
{"compositeOne":"co", "compositeTwo": "ctr"}
TEST集合的文档内容与流文件完全相同。
我希望更新查询能够通过,因为我看不到任何错误,而是出现了以上错误。
我已经尝试使用此查询在mongo shell中重现此内容:
db.TEST.update({_id: {"compositeOne":"co", "compositeTwo": "ctr"}}, {_id: {"compositeOne":"co", "compositeTwo": "ctr"}, "value": true}, {upsert: true});
此查询不会产生任何错误。如何配置PutMongo处理器,以使查询不会产生以上错误?
答案 0 :(得分:0)
您正在尝试修改_id键,就像主键。
您无法更新 _id键,因为错误描述表明您正在尝试修改不可变对象。
关于以下查询
db.TEST.update({_id: {"compositeOne":"co", "compositeTwo": "ctr"}}, {_id: {"compositeOne":"co", "compositeTwo": "ctr"}, "value": true}, {upsert: true});
当您尝试在已经具有相同文档的mongodb中执行upsert时,mongo只会忽略它并且不更新任何新数据。假设您尝试更新相同数据mongo只是找到了匹配项但没有更新任何内容如下所示。
注意:“ nUpserted”:0