こんにちは、私はnodejsとmongodbを初めて使っています。以下の構造を持つjsonファイルを持っています。 "comments"スキーマ入れ子/埋め込みスキーマの複数のレコードがmongodb、nodejsに挿入されていない
{
"buyerId": "B58",
"sellerId": "SL8",
"comments": {
"title": "title5",
"body": "body5",
"date": "12-07-2017"
}
}
exports.post = function(req, res) {
const comments = []
var s = new shipment();
s.sellerId = req.body.sellerId;
s.buyerId = req.body.buyerId;
s.poId = req.body.poId;
s.comments.push({
title: req.body.comments.title,
body: req.body.comments.body,
date: req.body.comments.date
});
s.save(function(err) {
if (err) {
res.send(err);
}
console.log("added");
res.send({
message: 'shipment Created !'
})
})
}
の下に上記の「ポスト」機能は、私が唯一の「コメント」のセクションを持っているとき、私は意味し、データが正しく に挿入されます正常に動作しますように私は1つの関数を定義していますモンゴブ
{
"_id": ObjectId("59689bc59058dbc812000002"),
"buyerId": "B58",
"sellerId": "SL8",
"comments": [{
"title": "title5",
"body": "body5",
"date": ISODate("2017-12-06T18:30:00Z"),
"_id": ObjectId("59689bc59058dbc812000003")
}],
"__v": 0
}
下に示すように、私は複数の「コメント」を有する場合、以下に示すように、以下に示すよう
{
"buyerId": "B58",
"sellerId": "SL8",
"comments": [{
"title": "title5",
"body": "body5",
"date": "12-07-2017"
},
{
"title": "title8",
"body": "body7",
"date": "12-07-2017"
}
]
}
は次にコメント部のMongoDBに挿入されません。
{
"_id": ObjectId("5968c04d4c02336800000002"),
"buyerId": "B57",
"sellerId": "SL7",
"comments": [{
"_id": ObjectId("5968c04d4c02336800000003")
}],
"__v": 0
}
すべてのコメントセクションをmongodbに正しく挿入するには、どのような変更を行う必要がありますか?
実際のスキーマは、質問の最初に指しているように、実際には「埋め込み」ではなく「参照」されているように見えます。また、これらの用語を調べて、その違いが何であるかを理解する必要があります。 2番目の例は実際にPOSTリクエストで送信されるデータを表していますか?最初はコンテンツが配列ではないので、それが単一の要素であるため '.push()'は大丈夫です。 2番目の形式は "配列"ですが、要素を反復せずに '.push() 'することはできません。 –
しかし、他のすべての現実では、コアドキュメンテーションの['$ push'](https://docs.mongodb.com/manual/reference/operator/update/push/)演算子について実際に読む必要があります。あなたが現在行っていることよりはるかに優れています。 –