更新

时间:2015-06-28 11:59:22

标签: mongodb mongodb-query

在mongoDB中更新文档时获取writeError(代码2)。

以下是代码:

db.transactions.insert(
    { 
         _id: 1, 
         source: "A",
         destination: "B", 
         value: 100,
         state: "initial", 
         lastModified: new Date()
   }
)


var t = db.transactions.findOne( { state: "initial" } )

db.transactions.update(
    { "_id": t._id, "state": "initial"},
    { 
        "$set": { "state": "pending" },
        "$currentDate": { "lastModified" : true }
    }
)

上面代码中的最后一个语句失败并出现错误:

WriteResult({
    "nMatched" : 0,
    "nUpserted" : 0,
    "nModified" : 0,
    "writeError" : {
            "code" : 2,
            "errmsg" : "cannot compare to undefined"
    }
})

需要帮助了解抛出此错误的原因以及正确的更新语法。

1 个答案:

答案 0 :(得分:1)

您的代码 Jatin 没有问题,请确保您正好粘贴在mongo shell中,我盲目地将您的代码粘贴在我的mongo shell中并且它有效。粘贴屏幕截图供您参考。

https://www.dropbox.com/s/or71q4ma8rbt4iz/mongo_txn_err_code_issue.png?dl=0

另外,您可以参考mongo doc获取相同的示例并详细讨论它。

http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/

如果您需要任何进一步的帮助,请告诉我们。

Happy Mongoing: - )

- $