elasticsearch,mongodb-query,upsert,Mongodb,elasticsearch,Mongodb Query,Upsert" /> elasticsearch,mongodb-query,upsert,Mongodb,elasticsearch,Mongodb Query,Upsert" />

MongoDB在不影响现有文档(如Elasticsearch)的情况下升级

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" : {

在mongodb update中,只是一个标志,这意味着文档不存在时创建,存在时更新

在elasticsearch中,可以分别指定一个doc json和一个upsert json,其中包含更新的字段,以及一个只添加到新文档中的字段。因此,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
中的内容。其他在插入和文档匹配时应用“两者”