使用 mongoose、nodejs 将文档插入 mongodb 数组
insert document into mongodb array using mongoose, nodejs
我想在 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);
}
我不确定文档是否插入到数组中,并在 google 上搜索后尝试了上面的操作,但没有成功。
感谢帮助!
编辑
现在已成功创建记录,但新记录是作为文档创建的,但不在值下array.Please看看屏幕截图(link 下面给出)
我想在值中创建新记录,这样创建后的计数将为 2696,而不是创建新的单独文档。
screenshot
在您的模式中,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);
}
我想在 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);
}
我不确定文档是否插入到数组中,并在 google 上搜索后尝试了上面的操作,但没有成功。
感谢帮助!
编辑
现在已成功创建记录,但新记录是作为文档创建的,但不在值下array.Please看看屏幕截图(link 下面给出)
我想在值中创建新记录,这样创建后的计数将为 2696,而不是创建新的单独文档。 screenshot
在您的模式中,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);
}