में किसी सरणी पर ऑब्जेक्ट को जोड़ने के लिए मेरे पास एक संग्रह है जो कुछ उत्पादों के दस्तावेज़ संग्रहीत करता है। दस्तावेज़ में, उत्पाद पर उपयोगकर्ताओं के मूल्य मूल्यांकन की वस्तुओं को संग्रहीत करने के लिए 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
डुप्लिकेट ऑब्जेक्ट की जांच के लिए आईडी फ़ील्ड का उपयोग करने के लिए काम करता है?
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();
})
})
अपने sch में '{_id: false} 'जोड़ें एएमए, इस तरह मोंगोज़ उप दस्तावेजों के लिए '_id' नहीं बनाएगा। - http://stackoverflow.com/questions/17254008/stop-mongoose-from-created-ids-for-subdocument-arrays – BatScream
मूल प्रश्न को हल करने की कोशिश कर रहे समस्या को निर्दिष्ट करने की आवश्यकता है –