$addToSet 对象到 mongoose 中的数组 [重复]

Posted

技术标签:

【中文标题】$addToSet 对象到 mongoose 中的数组 [重复]【英文标题】:$addToSet an object to an array in mongoose [duplicate] 【发布时间】:2015-03-08 19:22:55 【问题描述】:

我有一个存储一些产品文档的集合。文档中有一个数组evaluation,用于存储用户对产品的价格评价对象。

这是一个用户对象的例子:

var data = user_id:90,price:400

谁能告诉我是否可以在 evaluation 数组上执行“插入重复更新”?我试过$addToSet,但是当一个对象被推入evaluation时,有一个_id属性添加到用户对象中,即使我在模型中没有它,像这样:


  "_id": 54b13f52604fc5d242d4aa68,
  "__v": NumberInt(0),
  "evaluation": [
    
      "price": NumberInt(14616),
      "user_id": NumberInt(91),
      "_id": ObjectId("54b13f5e604fc5d242d4aa6b") // Why is it added?
    ,
    
      "price": NumberInt(16211),
      "user_id": NumberInt(92),
      "_id": ObjectId("54b140d1604fc5d242d4aa74") //
    
  ],
  "product": [
   
      "title": "ABC",
      "model_id": "382",
      "id": "513",
      "category": "1",
      "src": "xxx.jpg"
    
  ],
  "timestamp":ISODate("2015-01-10T15:03:46.310Z")

$addToSet 是这样使用 id 字段来检查重复对象的吗?

model.js

var evaluation = new mongoose.Schema(
       product:[],
       timestamp :  type : Date, default: Date.now ,
       evaluation:[user_id:Number,price:Number],
,strict:false);

var models = 
      Eva:mongoose.model('Evaluation',evaluation)
    ;

app.js

var mongo_models = require('./db/mongo_model')(mongoose);
Eva = mongo_models.Eva;

io.on('connection', function(socket)
  socket.on("evaluation",function(d)
    var data = user_id:user_id,price:d.price;
    Eva.update(_id:d.tid,$addToSet:evaluation:data).exec();
  )
)

【问题讨论】:

_id : false 添加到您的架构中,这样猫鼬就不会为子文档创建_ids。 - ***.com/questions/17254008/… 原始问题需要具体说明他们试图解决的问题 【参考方案1】:

您可以通过声明元素的内联架构并禁用 _id 来阻止 Mongoose 将 _id 字段添加到 evaluation 数组元素:

var evaluation = new mongoose.Schema(
   product:[],
   timestamp :  type : Date, default: Date.now ,
   evaluation:[Schema(user_id:Number,price:Number, _id: false)],
,strict:false);

【讨论】:

以上是关于$addToSet 对象到 mongoose 中的数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

$ addToSet到一个数组,但它给我null

删除重复 ($addToSet) mongoose 聚合后如何对数据求和

如何使用带有 Mongoose 的 addToSet 添加多个 ObjectId?

如何在 Mongoose 中使用 $addToSet 和 ObjectId 数组?

Mongoose Schema中Array内的重复值

使用 mongoose 获取新嵌入的文档