我想在mongoDB中插入一条记录。 数据库模型如下:
var stockhistory = new Schema({
symbol: String,
values: [{
date: Date,
open: Number,
close: Number,
high: Number,
low: Number,
adjClose:Number,
volume: Number
}]
});
我想将新文档插入值数组。
我尝试过以下操作但收到错误。
var insertObj = {
'date': obj[0].lt,
'open': obj[0].op,
'close': obj[0].l,
'high': obj[0].hi,
'low': obj[0].lo,
'adjClose': obj[0].l_fix,
'volume': obj[0].vo
};
var sname = 'symbol';
var History = require('../model/stockHistory');
var history = new History({ symbol: sname, values: insertObj });
history.save(function(err) {
if (err) {
return err;
} else {
console.log("Quote saved");
}
});
并且
History.findOneAndUpdate(
{symbol: sname},
{$push: {values: insertObj}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}
我不确定将文档插入到数组中并在搜索谷歌但未通过后尝试上面。
感谢您的帮助!
修改
现在已成功创建记录但新记录是作为文档创建的,但不是在值数组下创建的。请查看截图(下面给出的链接)
我想在值中创建新记录,以便创建后的计数为2696,而不是创建新的单独文档。 screenshot
答案 0 :(得分:1)
在您的架构上,values
是一个数组,但是当您这样做时:
var history = new History({ symbol: sname, values: insertObj });
您将值设置为对象。你可以尝试:
var insertObj = {
'date': obj[0].lt,
'open': obj[0].op,
'close': obj[0].l,
'high': obj[0].hi,
'low': obj[0].lo,
'adjClose': obj[0].l_fix,
'volume': obj[0].vo
};
var sname = 'symbol';
var History = require('../model/stockHistory');
var history = new History({ symbol: sname, values: insertArr });
History.findOneAndUpdate(
{symbol: sname},
{$push: {values: insertObj}},
{safe: true, upsert: true},
function(err, model) {
console.log(err);
}