【问题标题】:Create unique objects in array in mongoDB在 mongoDB 的数组中创建唯一的对象
【发布时间】:2018-11-07 19:59:53
【问题描述】:

我的问题是我想创建一个对象数组,在其中我希望基于两个对象值的对象的唯一性。 像根据对象的两个值创建一个键并查看它是否是唯一的,而不是将对象推送到数组中,否则什么都不做。

代码在这里

// Schema
let schema = new Schema({

// accessing info of article
    info: [{
        // don't need to generate separate id
        _id: false,

        impression: {
            type: Boolean,
            validate: {
                validator: validator.isBoolean
            }
        },

        // article accessed by IP
        IP: {
            type: String,
            default: 'NULL'
        },

        // time of accessing article
        time: {
            type: Date,
            default: new Date()
        }
    }]
});

这里我想检查IP和印象对是否存在,然后不要做任何其他事情,将其推送到信息数组中。

提前致谢。

【问题讨论】:

  • 这对值在文档数组或整个集合中必须是唯一的吗?

标签: mongodb mongoose unique-index


【解决方案1】:

使用 $addToSet 代替推入数组。但是,由于时间的原因,您会遇到同样的问题。如果您可以设法将该时间放在架构中的其他位置,则可以使用 addToSet,因为它只会将唯一元素推送到数组中。

const newInfo = {
    impression:{validate: true},
    IP:{"192.168.1.1"}
}

schema.update(
    ...
    {$addToSet: newInfo}
);

您可能已经解决了这个问题。找到解决方案后,请不要让问题无人看管。

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2011-08-22
    • 2016-02-16
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2021-11-21
    • 2013-09-17
    相关资源
    最近更新 更多