繁体   English   中英

使用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
    }]
});

我想将新文档插入values数组。

我尝试了以下操作,但出现错误。

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上搜索但无法通过后尝试以上操作。

感谢帮助 !

编辑

现在已经成功创建了记录,但是新记录被创建为文档,但不在values数组下。请查看屏幕快照(下面给出的链接)

我想在值中创建新记录,以便创建后的计数为2696,而不是创建新的单独文档。 屏幕截图

在您的架构上, 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);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM