繁体   English   中英

Mongoose更新嵌套文档的字段不起作用

[英]Mongoose update the field of the nested document not working

我试图使用mongoose更新嵌套子文档的字段。
这是模型和源代码。
模型

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var info_schema = mongoose.schema({
   info:Schema.Types.Mixed,
},{collection:'info'});
var InfoModel = mongoose.model('info', info_schema);

我试图执行db.info.updateMany({'info.addition.group':myid},{$set:{'info.addition.field1':'a','info.addition.field2':'b'}})在mongoshell中。
它运作良好,但使用猫鼬无效。

 InfoModel.updateMany({'info.addition.group':myid},{$set:{'info.addition.field1':'a','info.addition.field2':'b'}}).exec();    

为什么mongoose不更新子嵌套文档的字段?
所以我试着更详细地描述模型。

 var info_schema = mongoose.schema({
   info:{
      addition:Schema.Types.Mixed,
      otherinfo:String,
      modified:Number,
      ....
    },
 },{collection:'info'});

这时,猫鼬扔出了错误。

CastError:对于路径“add”处的值“a”,转换为数字失败

我做错了什么?
这是什么原因?

这可以使用您的代码并稍微修改它:

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var info_schema = new Schema({  // <-- just use Schema
   info: Schema.Types.Mixed
},{collection:'info'});
var InfoModel = mongoose.model('info', info_schema);

InfoModel.updateMany({'info.addition.group': 1},  // <-- I used 1 for testing
{ $set: { 'info.addition.field1' : 'a', 'info.addition.field2' : 'b' } }).exec()

首次使用info.addition.id == 1创建记录后在本地测试,以便我可以更新它等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM