update sort findbyidandupdate example delete attribute javascript node.js mongodb mongoose

javascript - findbyidandupdate - mongoose sort



$ addToSet un objeto a una matriz en mangosta (1)

Tengo una colección que almacena documentos de algunos productos. En el documento, hay una evaluation matriz para almacenar objetos de las evaluaciones de precios de los usuarios en un producto.

Aquí hay un ejemplo de objeto de usuario:

var data = {user_id:90,price:400}

¿Alguien puede decirme si es posible hacer un "Insertar en la actualización duplicada" en la matriz de evaluation ? He intentado $addToSet , pero cuando un objeto se $addToSet en la evaluation , se _id una propiedad _id al objeto del usuario, aunque no lo tengo en el modelo, así:

{ "_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") }

¿Es así como $addToSet funciona para usar el campo id para verificar si hay objetos duplicados?

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(); }) })


Puede evitar que Mongoose agregue un campo _id a los elementos de la matriz de evaluation declarando un esquema en línea para los elementos y deshabilitando _id :

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