如何使用日期字段添加ToTet

时间:2014-06-04 12:51:07

标签: mongodb mongoose

我在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包含日期/时间字段?

1 个答案:

答案 0 :(得分:1)

要使$addToSet不添加元素,该元素必须完全匹配现有元素。当createdOn为当前时间时,很容易理解为什么在您的情况下永远不会发生这种情况。

因此$addToSet适用于包含Date字段的元素,但它需要完全匹配,就像使用任何其他类型一样。