Mongodb 猫鼬更新查询

Mongodb 猫鼬更新查询,mongodb,mongoose,Mongodb,Mongoose,大家好,我正在尝试使用mongoose进行更新,但似乎无法使其正常工作。这是我正在保存的数据 var mongoose = require('mongoose'); var DataSchema = new mongoose.Schema({ advisorEmail: { type: String }, data: { type: Array }, client: { type: String, required: true, t

大家好,我正在尝试使用mongoose进行更新,但似乎无法使其正常工作。这是我正在保存的数据

 var mongoose = require('mongoose');

var DataSchema = new mongoose.Schema({
  advisorEmail: {
    type: String
  },
  data: {
    type: Array
  },
  client: {
    type: String,
    required: true,
    trim: true
  },
  accountBalance: {
    type: Number,
    required: true,
    trim: true
  },
  description: {
    type: String,
    required: true,
    trim: true
  },
  AccountValue: {
    type: Number,
    required: true,
    trim: true
  },
  moneyMarket: {
    type: Number,
    required: true,
    trim: true
  },
  buyingPower: {
    type: Number,
    required: true,
    trim: true
  },
  netBalance: {
    type: Number,
    required: true,
    trim: true
  },
  advisorPercentage: {
    type: Number,
    required: true,
    trim: true
  }
});

var Data = mongoose.model('Table', DataSchema);
module.exports = Data;
下面是我为更新数据数组而编写的代码

Data.update({
"advisorEmail":"Travis@travis.com"
}, 
{"$push":
    { "data":{"client": "Tester", "accountBalance": 21342,     
"description": "test From Nodejs", "AccountValue": 123234,     
"moneyMarket": 11000, "buyingPower": 01, "netBalance": 10, 
"advisorPercentage": 24}}}, function(err, updateData){
       if (err) throw (err);
       console.log(updateData);
    });
没有错误,这是我从“updateData”返回的console.log

但当我采用相同的结构,进入本地mongodb并

 db.tables.update({
     "advisorEmail": "Travis@travis.com"
 }, {
     "$push": {
         "data": {
             "client": "bobby",
             "accountBalance": 123,
             "description": "TravisPUTO",
             "AccountValue": 123,
             "moneyMarket": 1000,
             "buyingPower": 0,
             "netBalance": 0,
             "advisorPercentage": 1
         }
     }
 })
它工作得很好,上面写着

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
这是猫鼬问题吗?我真的不知道怎么了


谢谢你为我所做的一切

请使用其他字段更新您的架构

advisorEmail : {type: String},
data: { type: Array },

因此,mongoose识别了您更新的字段。

您的型号名称似乎是
数据
。您是否真的像
mongoose.model('Data',dataSchema,“tables”)
那样定义了它?因为如果没有,则可能指向错误的集合名称,甚至可能指向错误的数据库。参见
n:0
,这里指的是shell中的“匹配的数字”或
n匹配的
。因此,要么您指向错误的位置,要么您的mongoose模式不正确并更改了输入值。我使用Data.find(),这样就可以知道它是正确的表。我所做的就是将Data.update()切换到db.tables.update()并将查询复制到终端中的mongod,这样就可以了。所以我知道mongo的代码是正确的,但它会用Mongoose切换到不同的语法吗?语法完全相同。模式将是错误的。在你的问题中显示你的模式。@NeilLunn我用这个模式更新了问题。另一个模式呢?您是否确实有
数据:[DataSchema]
数据:[{type:Schema.Types.ObjectId,ref:'data'}]
或类似数据?其中只有一个是正确的。是的,这就是原因!我没有意识到我也需要这些,因为我没有将数据输入数据库,因为它已经存在了。我认为模式中唯一必须包含的是您正在保存的数据。非常感谢。如果这个答案解决了你的问题,请把它标记为正确
advisorEmail : {type: String},
data: { type: Array },