2016-10-15 14 views
0

mongoDBにレコードを挿入したいと思います。私は、値の配列に新しい文書を挿入するmongoose、nodejsを使ってmongodb配列に文書を挿入します

var stockhistory = new Schema({ 
symbol: String, 
values: [{ 
    date:  Date, 
    open:  Number, 
    close: Number, 
    high:  Number, 
    low:  Number, 
    adjClose:Number, 
    volume: Number 
    }] 
}); 

: DBモデルとしてあります。

私は以下を試みましたが、エラーが発生しました。

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値の下に作成されています値は作成後のカウントが2696になり、代わりに別の新しいドキュメントが作成されます。あなたのスキーマに screenshot

答えて

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); 
    } 
+0

返信ありがとうございます...あなたが提供したソリューションを試しましたが、レコードが挿入されませんでした。 – Jitesh

+0

エラーを返しますか? – andresk

+0

今作成されたレコードは、鉱山でも解決策でも作成されました.DATEフィールドの型キャストのためにエラーが発生しました。しかし、新しいレコードは別のドキュメントとして作成されますが、array.Iではありません。そこに見る。 – Jitesh

関連する問題