我在mongoose中有以下模型:
var RelationSchema = new Schema({
user : {type:ObjectId, ref:'users'}
, type : String
, remarks : String
, createdOn : {type:Date, default:Date.now}
}, {_id:false});
var UserRelationSchema = new Schema({
user : {type:ObjectId, ref:'users'}
, relations : [RelationSchema]
});
var UserRelation = mongoose.model('user_relations', UserRelationSchema);
每次运行具有相同值的以下命令时,都会在relations
数组中添加新的子文档。如果我从createdOn
架构中删除了RelationSchema
字段,那么它可以正常工作。
UserRelation.update(
{"user":<ObjectId>}
, {
$addToSet: {
"relations": {"user":<ObjectId>,"type":<String>}
}
, {upsert:true}
});
我的问题是:
我如何addToSet
包含日期/时间字段?
答案 0 :(得分:1)
要使$addToSet
不添加元素,该元素必须完全匹配现有元素。当createdOn
为当前时间时,很容易理解为什么在您的情况下永远不会发生这种情况。
因此$addToSet
适用于包含Date
字段的元素,但它需要完全匹配,就像使用任何其他类型一样。