如何使用日期字段添加ToSet

Lek*_*ath 5 mongoose mongodb

我在猫鼬中有以下模型:

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);
Run Code Online (Sandbox Code Playgroud)

每次我使用相同的值运行以下命令时,都会将新的子文档添加到数组中relations。如果我createdOn从架构中删除字段RelationSchema,那么它就可以正常工作。

UserRelation.update(
{"user":<ObjectId>} 
, {
    $addToSet: {
       "relations": {"user":<ObjectId>,"type":<String>}
    }
, {upsert:true}
});
Run Code Online (Sandbox Code Playgroud)

我的问题是: 如何addToSet使用日期/时间字段?

Joh*_*yHK 1

为了$addToSet不添加元素,该元素必须与现有元素完全匹配。鉴于createdOn当前时间,很容易看出为什么在您的情况下从未发生这种情况。

因此$addToSet对于具有字段的元素来说效果很好Date,但它需要精确匹配,就像任何其他类型一样。