【发布时间】:2016-10-06 04:00:09
【问题描述】:
我的收藏如下:
"_id" : ObjectId("5751f7892ae95d601f40411d"),
"doc" : [
{
"org" : ObjectId("5751f7892ae95d601f40411c"),
"action" : 0,
"_id" : ObjectId("5751f7892ae95d601f40411e")
},
{
"org" : ObjectId("5751952cace204c507fad255"),
"action" : 1,
"_id" : ObjectId("575217ce341cf6512b8dff39")
} ]
我想用 org:5751952cace204c507fad255 更新文档中的操作字段 所以 action 等于 2 我知道这已经被回答了很多次,但它对我不起作用
这是我尝试过的,但 Collection 没有改变:
Model.update(
{
"_id":ObjectId("5751f7892ae95d601f40411d"),
"doc.org":ObjectId("5751952cace204c507fad255")
},
{
"$inc": {
"doc.$.action": 1
}
}
)
【问题讨论】:
-
你从哪里得到
ObjectId()包装器? -
var ObjectId = require('mongoose').Types.ObjectId;我也认为找到我的收藏有问题,但我尝试了 Model.find 相同的条件并打印了结果,我的收藏被成功找到
-
您是否尝试过在不包装字符串
_ids 的情况下进行更新? -
是的,我都试过了。我认为我的问题不在于嵌套文档,因为我刚刚尝试更新我的集合的名称,因为它有一个字段名称: db.Employee.update({_id:ObjectId("575194e6ace204c507fad250")},{FName: "youssef"}) ,它说 WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) ,但是当我去查看我的 Employee 集合时,FName 没有改变
标签: javascript node.js mongodb mongoose