Mongodb 猫鼬更新查询
大家好,我正在尝试使用mongoose进行更新,但似乎无法使其正常工作。这是我正在保存的数据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
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 },