如果找不到,请添加到收藏夹

时间:2016-08-04 12:26:26

标签: javascript node.js mongodb mongoose

我的收藏品名称embedded documentlikes

{
    "_id" : ObjectId("57a31e18fa0299542ab8dd80"),
    "created" : ISODate("2016-08-04T10:51:04.971Z"),
    "likes" : [ 
        {
            "user" : ObjectId("1"),
            "date" : 123
        }, 
        {
            "user" : ObjectId("2"),
            "date" : 456
        }
    ],
    "comments" : [],
    "tag" : []
}

User只能 一次。因此,每个User必须只有一个条目。

问题是:它在对象列表中也会查找date,但我只想搜索user并添加current date找到。由于date每次都不同,因此我会获得相同user的重复条目。

这是我的mongoose查询:

var likeObj = {
    "user": "1",        //user id
    "date": Utils.getUnixTimeStamp()    //date
};

post.update({_id: postId}, {$addToSet: {"likes": likeObj}} ,function(err,doc){
    //success
});

1 个答案:

答案 0 :(得分:0)

您可以将用户添加到查询中:



 post.update({_id: postId, 
                 likes: {$not: {$elemMatch: {user: likeObj.user}}}},
                         {$addToSet: {"likes": likeObj}} ,function(err,doc){
       
    });