-1

我在 mongoDB 中使用嵌入式数组,文档如下所示

{
    "_id" : ObjectId("516f89b393307a0f73533863"),
    "desc" : "LrOBVgWHHRyAxgYdKIwwgATcGTNBlz",
    "comments" :[
                 { 
                     "comment" : "superb",
                     "likeOrUnlike" : [
                          {"name":"kk",
                           "date":"2013/04/11",
                            "like":true
                           }
                      ]
                 }
      ]
   "date" : ISODate("2013-04-18T05:50:43.112Z"),
   "title" : "OaTHxDDMoINSaZCHCSNpJLNQyrqXGZ"

}

我想要update评论中likeOrUnlike数组中的日期和like字段,在这种情况下无法自动更新,所以我想通过代码手动进行(检索整个文档并更新),

在这种情况下会出现并发问题

scenario :如果两个人同时喜欢相同的评论。

所以解决方案是锁定特定的更新功能

 var updateComments = function(id,data){
     db.posts.findOne({"_id" :id},function(err,res){
        // stuff   
        //mongo update
     });
 };

我不能发布整个代码。

我的问题是

如何锁定node.js中的功能?

锁定 node.js 功能是好习惯吗?

4

2 回答 2

1

http://docs.mongodb.org/manual/reference/operator/positional/

使用 mongodb 位置运算符更新数组内的对象

于 2013-04-23T05:03:52.070 回答
0

锁定应该是最后的手段。使用 $push ( http://docs.mongodb.org/manual/reference/operator/push/ ) 或其他集合。

于 2013-04-19T12:27:43.160 回答