私はstackoverflowを調べましたが、答えは見つかりませんでした。私は重複していない私のローカルmongodbの新しい(空の)配列にObjectを追加しようとしています。私はまた、この配列を他のオブジェクトで更新したいと思っています。Mongoose.jsを使用してドキュメント内のオブジェクトの配列にオブジェクトを追加する
$ pushと$ addToSetを見てきましたが、例では"id"(_id)を使用しています。これは最初のオブジェクトを追加するまで作成されません。
私はNode.js、Mongoose.js、Mongodb、Express.jsを使用しています。
私のスキーマは次のとおりです。私はこれを使用しようとした
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var barSchema = new Schema({
location: [{
name: String,
city: String,
total: Number
}]
});
var Bar = mongoose.model('Bar', barSchema);
module.exports = Bar;
。
var newBar = bar({
location: [{ "name": req.body.bar, "city": req.body.city, "total": 0 }] });
newBar.save(function(err) {
if (err) throw err;
});
は、私はまた、成功を収めて$のプッシュを使用しましたが、この場合には、私はこれをバック与え「ID」
user.findByIdAndUpdate(req.user._id, { $push: {
barlist: { "name": req.body.bar,
"rsvp": true } } },
function(err, user) { });
を持っていませんでした。
{
"_id" : ObjectId("######"),
"location" : [
{
"name" : "1st Bar",
"city" : "Boston",
"total" : 0,
"_id" : ObjectId("#########")
}
],
"__v" : 0
}
{
"_id" : ObjectId("######"),
"location" : [
{
"name" : "2nd Bar",
"city" : "Boston",
"total" : 0,
"_id" : ObjectId("#########")
}
],
"__v" : 0
}
しかし、私はこれを取得しようとしています。
{
"_id" : ObjectId("#######"),
"location" : [
{
"name" : "Biddy Early's",
"city" : "Boston",
"total" : 0
},
{
"name" : "Some Bar Name",
"city" : "Boston",
"total" : 0
}
]
}
ロケーションオブジェクトに '_id'を入れない場合は、スキーマに' _id:false'を追加してください。 'Location:[{name:String、city:String、total:Number、_id:false}]' –
ありがとうTarush私はそれを行うことができるかどうかわかりませんでした。しかし、それは私が焦点を当てたものではありませんでした。将来私はそれを念頭に置いていきますが。私はあなたの助けに感謝します。 –