[英]updating embedded document not working mongoose
集合包含以下條目
> db.tags.find()
{ "_id" : ObjectId("5446a012cdc70d0732565c84"), "tag" : "java", "data" : [ { "date" : "2001/1/20", "view" : "700" } ], "__v" : 0 }
當我嘗試使用以下代碼將數據推入數組時
var Tag = require('./DBConn');
var condtion = {"_id" : "5446a012cdc70d0732565c84"}
var updateData ={
"data":[
{
"date":"2001/1/21",
"view":"145"
}
]
}
tag.update(condtion,{$push:updateData},function (err) {
if (!err) console.log('Update Success!');
});
並查詢集合,它會提供相同的記錄,而不會更新集合,
> db.tags.find()
{ "_id" : ObjectId("5446a012cdc70d0732565c84"), "tag" : "java", "data" : [ { "date" : "2001/1/20", "view" : "700" } ], "__v" : 0 }
我在更新中正在做什么錯,該在哪里糾正?
添加了完整的代碼
ModelT.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/stack1');
var stackSchema = mongoose.Schema({
name: String
})
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var tagData = new Schema(
{
tag : String,
data :[viewData]
}
)
var viewData = new Schema({
view : String,
date : Date
});
module.exports = mongoose.model('Tag', tagData);
Test.js文件
var Tag = require('./ModelT');
var condtion = {"_id" : "5446acd5277da1896bb326a6"}
var updateData = {
"data": {
"date":"2001/1/21",
"view":"145"
}
};
//var updateData = {
// "data": { $each: [{
// "date":"2001/1/21",
// "view":"145"
// }]}
// };
var tag = new Tag(
);
Tag.update(condtion,{$push:updateData},function (err) {
if (!err) console.log('Update Success!');
});
在將值數組傳遞給$push
運算符時,您需要使用$each
修飾符:
var updateData = {
"data": { $each: [{
"date":"2001/1/21",
"view":"145"
}]}
};
要么或者只是傳遞單個對象而不將其放入數組中:
var updateData = {
"data": {
"date":"2001/1/21",
"view":"145"
}
};
tag.update(condtion, {$push: updateData}, function (err) {
if (!err) console.log('Update Success!');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.