【发布时间】:2014-09-25 20:06:16
【问题描述】:
目前,由于语法错误,Mongo 正在跳过此更新。当我为 $.to 尝试不同的展示位置时。 (如replies.$.to),结果:[MongoError: cannot use the part (to of replies.0.to.read.marked) to traverse the element..]
$set应该如何编辑:
Models.Message.findOneAndUpdate(
{ "replies._id": ObjectId("53dd4b67f0f23cad267f9d8b"), "replies.to.username": "UserA" },
{
"$set": {
"$.to.read.marked": true,
"$.to.read.datetime": req.body.datetimeRead,
"$.to.updated": req.body.datetimeRead
}
},
to $set to.read.marked:true for userA 的具体回复:
{
"_id" : ObjectId("53daf26af7b70fd82ffd4cff"),
"updated" : ISODate("2014-08-02T20:36:03.000Z"),
"message" : "here's a message",
"replies" : [
{
"reply" : "here's a reply",
"created" : 1407011687000,
"_id" : ObjectId("53dd4b67f0f23cad267f9d8b"),
"to" : [
{
"username" : "userA",
"updated" : ISODate("2014-08-02T20:34:47.000Z"),
"_id" : ObjectId("53dd4b67f0f23cad267f9d8c"),
"read" : {
"datetime" : ISODate("2014-08-02T20:34:47.000Z"),
"marked" : false
}
},
{
"username" : "userB",
"updated" : ISODate("2014-08-02T20:34:47.000Z"),
"_id" : ObjectId("53dd4b67f0f23cad267f9d8d"),
"read" : {
"datetime" : ISODate("2014-08-02T20:34:47.000Z"),
"marked" : false
}
}
]
},
{
"reply" : "here's another reply",
"created" : 1407011763000,
"_id" : ObjectId("53dd4bb3a9f9497e270525cb"),
"to" : [
{
"username" : "userA",
"updated" : ISODate("2014-08-02T20:36:03.000Z"),
"_id" : ObjectId("53dd4bb3a9f9497e270525cc"),
"read" : {
"datetime" : ISODate("2014-08-02T20:36:03.000Z"),
"marked" : false
}
},
{
"username" : "userB",
"updated" : ISODate("2014-08-02T20:36:03.000Z"),
"_id" : ObjectId("53dd4bb3a9f9497e270525cd"),
"read" : {
"datetime" : ISODate("2014-08-02T20:36:03.000Z"),
"marked" : false
}
}
]
}
],
...
}
【问题讨论】: