$ addToSet一个对象到一个数组在mongoose
我有一个存储一些产品文件的集合。 在文档中,有一个数组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
来防止Mongoose向evaluation
数组元素添加_id
字段:
var evaluation = new mongoose.Schema({ product:[], timestamp : { type : Date, default: Date.now }, evaluation:[Schema({user_id:Number,price:Number}, {_id: false})], },{strict:false});
- Selenium WebDriverJS,不能为Chrome构buildwebdriver
- 如何有效地使用onClick和EJS
- Nodejs运行但没有输出'Hello'(使用模块)
- 节点js指挥官参数返回true,而不是值
- 括号后面的variableses6
- 在React组件中使用Electron的ipcRender
- 什么是var app = express(); 在创buildNode.Js应用程序的过程中?
- learnyounode文件服务器为什么把createReadStream()里面的createServer()?
- 如何在aws S3 javascript SDK中configurationinterval和max_attempts