首页 > 解决方案 > 猫鼬更新查询

问题描述

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

 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。

{ ok: 0, n: 0, nModified: 0 }

但是当我采用相同的结构并进入我的本地 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 })

这是猫鼬问题吗?我不太确定出了什么问题。

感谢您为我提供的任何帮助!

标签: mongodbmongoose

解决方案


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

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

所以猫鼬识别了你更新的字段。


推荐阅读