MongoDB在不影响现有文档(如Elasticsearch)的情况下升级
在mongodb update中,只是一个标志,这意味着文档不存在时创建,存在时更新 在elasticsearch中,可以分别指定一个doc json和一个upsert json,其中包含更新的字段,以及一个只添加到新文档中的字段。因此,upsert中指定的字段不会影响现有文档 例如:MongoDB在不影响现有文档(如Elasticsearch)的情况下升级,mongodb,
elasticsearch,mongodb-query,upsert,Mongodb,
elasticsearch,Mongodb Query,Upsert,在mongodb update中,只是一个标志,这意味着文档不存在时创建,存在时更新 在elasticsearch中,可以分别指定一个doc json和一个upsert json,其中包含更新的字段,以及一个只添加到新文档中的字段。因此,upsert中指定的字段不会影响现有文档 例如: curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{ "doc" : { "name" : "new_name" }, "upsert" : {
curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"doc" : {
"name" : "new_name"
},
"upsert" : {
"is_new" : true
}
}
因此,如果文档1存在,其名称将更改为“new\u name”
,但不会添加“is\u new”
字段。如果它不存在,它将具有“is_new”=true
在mongodb有这样的事情吗
谢谢是的。修改器:
db.collection.update({“\u id”:1},{“$setOnInsert”:{“field”:2},{“upsert”true})
这意味着只有当新文档存在时才会应用$setOnInsert
中的内容。其他在插入和文档匹配时应用“两者”