簡體   English   中英

更新嵌入式文檔無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM