【问题标题】:Different upsert behavior on Cosmos DB vs MongoDBCosmos DB 与 MongoDB 上的不同 upsert 行为
【发布时间】:2017-06-13 20:30:56
【问题描述】:

我遇到了 Cosmos DB 的问题,其中使用 {upsert: true}$setOnInsert 的查询行为每次都会应用 insert 值,无论操作是否为插入或更新。

针对 Cosmos DB 和 MongoDB 运行以下示例查询的结果显示,defaultQty 的最终值存在差异。

db.products.remove({})
// WriteResult({ "nRemoved" : 1 })

db.products.insert({ _id: 1, item: "apple", price: 0.05, defaultQty: 50})
// WriteResult({ "nInserted" : 1 })

db.products.find({})
// { "_id" : 1, "item" : "apple", "price" : 0.05, "defaultQty" : 50 }

sleep(100)
db.products.update(
    { _id: 1 },
    { $set: { price: 0.10 }, $setOnInsert: { defaultQty: 100 }},
    { upsert: true }
)
// WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.products.find({})
// { "_id" : 1, "item" : "apple", "price" : 0.1, "defaultQty" : 100 }

这是comparison results 在 Studio 3T 中并排的屏幕截图。

有人经历过吗?

谢谢!

【问题讨论】:

    标签: mongodb azure azure-cosmosdb


    【解决方案1】:

    此问题现已修复,等待部署。你可以在这里跟踪进度https://feedback.azure.com/forums/599059-azure-cosmos-db-mongodb-api/suggestions/20017141-bug-fix-during-upsert-operation-setoninsert-is-b

    部署完成后我们将发布更新。

    谢谢!

    【讨论】:

    • 这不是答案。
    • 您可以将其添加为评论。
    • 我可以确认我们的测试通过了,这似乎已修复!谢谢!
    【解决方案2】:

    是的,这是一个已知问题,很快将在 Azure Cosmos DB 中修复。

    【讨论】:

    • 谢谢!是否有任何官方频道/更改日志可以检查并查看此问题稍后是否得到解决?
    • 一般来说,您可以在用户语音 (feedback.azure.com/forums/599059-azure-cosmos-db-mongodb-api) 上创建一个项目,以便对其进行投票,然后您可以查看它何时处于开发/修复状态。但是,此修复程序已经在进行中。应该在月底前可用。
    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2022-01-02
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多