我的问题是我想创建一个对象数组,在其中我希望基于对象的两个值来使对象具有唯一性。 类似于根据对象的两个值创建一个键并查看它是否唯一,而不是将对象推入数组中,否则什么也不做。
代码在这里
// 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和展示次数对是否存在,然后不做任何其他操作将其压入信息数组。
谢谢。
答案 0 :(得分:0)
使用 $addToSet 代替推入数组。但是,由于时间的原因,您会遇到同样的问题。如果您可以设法将该时间放在架构中的其他位置,则可以使用 addToSet,因为它只会将唯一元素推送到数组中。
const newInfo = {
impression:{validate: true},
IP:{"192.168.1.1"}
}
schema.update(
...
{$addToSet: newInfo}
);
您可能已经解决了问题。找到解决方案后,请不要忽视问题。