$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
添加到您的架构中,这样猫鼬就不会为子文档创建_id
s。 - ***.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) mongoose 聚合后如何对数据求和
如何使用带有 Mongoose 的 addToSet 添加多个 ObjectId?