【发布时间】:2018-07-13 02:20:35
【问题描述】:
我想做的事 我有一个带有 teamid 作为团队唯一标识符和名称的文档。我的模型中有一个数组“teamList”,其中包含所有团队成员的姓名。添加新成员时,我只想添加不存在的名称。因此,如果名称已经存在,则不应添加。
问题 我想确保在 teamList 数组中没有重复。但是现在,names 数组中的所有对象都添加到了 teamList,尽管使用了 $addToSet 并关闭了数组中的 _id。
这是我的架构:
var teamSchema = new Schema({
teamid: {
type: String,
required: true
},
created: {
type: Date
},
lastUpdated: {
type: Date,
default: Date.now,
required: true
},
teamList: [{
name: {
type: String,
required: true,
unique: true
},
dateAdded: {
type: Date,
default: Date.now
},
_id:false
}]
});
module.exports = mongoose.model('teamModel', teamSchema);
这是我的代码:
var mongoose = require('mongoose');
teamModel = mongoose.model('teamModel');
var names = [{name:'Robert'},{name:'Alice'},{name:'Bob'}];
var teamName = 'ManU';
teamModel.update({
teamid: teamName
}, {
$addToSet: {
teamList: {
$each: names
}
}
}, {
upsert: true
},
function (err, data) {
console.log(data);
});
我的问题类似于 - http://blog.open-tribute.org/2015/05/09/NodeJS-Mongoose-addToSet-duplicates-on-objects/ , Avoid duplicate entries on Mongoose array
但是 $addToSet 对我不起作用,可能是因为我传入了一个要添加到 teamList 数组的数组,所以我必须使用 $each(前面的问题中没有涉及)
【问题讨论】: