更新数组中的唯一更新

时间:2019-04-15 08:11:03

标签: mongodb

这个问题不是重复的 这个问题是重要的更新日期

ID = 24996

db.c.updateOne({_id: _id}, {$push: {data: {ID: ID, date: new Date()}}})

结果

{
    "_id" : "asdasd234",
    "data" : [
        {
            "ID" : "24996",
            "date" : ISODate("2019-04-15T07:53:53.157Z")
        },
        {
            "ID" : "24996",
            "date" : ISODate("2019-04-15T07:54:02.718Z")
        },
        {
            "ID" : "70188",
            "date" : ISODate("2019-04-14T05:14:45.122Z")
        }
    ]

}

理想

{
    "_id" : "asdasd234",
    "data" : [
        {
            "ID" : "24996",
            "date" : ISODate("2019-04-15T07:54:02.718Z")
        },
        {
            "ID" : "70188",
            "date" : ISODate("2019-04-14T05:14:45.122Z")
        }
    ]
}

我想ID是唯一的。 我创建了索引{data.ID}并具有唯一性,我尝试了$addToSet$push$set{_id: _id, 'data.ID': ID}, {xxx...},但结果如下

您的帖子似乎主要是代码;请添加更多详细信息。

1 个答案:

答案 0 :(得分:1)

尝试如下:

db.collection.update(
    {
        _id: ObjectId("5cb43da161630d1f1d302912"), 
        'data.ID': { $ne: ID }                      //  var ID (which we need to insert )
    },
    {$push: {data: {ID: ID, date: new Date()}}}
)