在mongoDB中的数组中创建唯一对象

时间:2018-11-07 19:59:53

标签: mongodb mongoose unique-index

我的问题是我想创建一个对象数组,在其中我希望基于对象的两个值来使对象具有唯一性。 类似于根据对象的两个值创建一个键并查看它是否唯一,而不是将对象推入数组中,否则什么也不做。

代码在这里

// 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和展示次数对是否存在,然后不做任何其他操作将其压入信息数组。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

您可能已经解决了问题。找到解决方案后,请不要忽视问题。