Mongoose中的唯一数组值

Rob*_*itt 12 arrays unique mongoose

目前正在追踪Mongoose和MongoDB的一个项目,但遇到了一个API尚不清楚的部分.

我有一个模型,其中包含几个键和文档,以及其中一个键被调用watchList.这是一个用户正在观看的ID数组,但我需要确保这些值保持独特.

以下是一些示例代码:

var MyObject = new Mongoose.Schema({
    //....
    watching : {type: Array, required: false},
    //....
});
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何确保推入数组的值只存储一个,所以使值唯一,我可以使用unique: true吗?

谢谢

fra*_*der 14

据我所知,在mongoose中执行此操作的唯一方法是调用底层的Mongo运算符(由danmactough提到).在猫鼬中,看起来像:

var idToUpdate, theIdToAdd; /* set elsewhere */
Model.update({ _id: idToUpdate }, 
             { $addToSet: { theModelsArray: theIdToAdd } }, 
             function(err) { /*...*/ }
);
Run Code Online (Sandbox Code Playgroud)

注意:此功能需要mongoose版本> = 2.2.2

  • can*theIdToAdd*是一个数组,例如`["ID1","ID2"]`? (3认同)
  • 我想你可以使用$ each. (2认同)
  • @RoberPitt优点...... theIdToAdd不能是一个数组.如果这样做,则要插入的项目将是该数组.我正试图找到解决这个问题的方法:-( (2认同)