私はマングースについて別の質問があります。今回は、私の文書内の他の配列の中の配列要素を更新したいと思います。それはstrucutureは私がname
によって_id
、選択したプロジェクトで文書を検索し、tasks
、アレイ内の新しいタスクを追加するこのMongooseの別の配列にネストされた配列に要素を追加する方法は?
{
"_id" : ObjectId("5702e0c732faf57c7bb9ebe9"),
"email" : "[email protected]",
"projects" : [
{
"name" : "inbox",
"title" : "Inbox",
"tasks" : [
{
"id" : "1",
"text" : "First task",
"labels" : [
"home",
"phone"
],
"dueDate" : "2016-03-18T11:10:00",
"created" : "2016-03-10T10:10:00",
"completed" : false
}
]
},
{
"name" : "work",
"title" : "Work",
"tasks" : [
{
"id" : "4",
"text" : "Fourth",
"labels" : [
"home",
"phone"
],
"dueDate" : "2016-03-18T11:10:00",
"created" : "2016-03-10T10:10:00",
"completed" : false
}
]
}
]
}
のように見えるのです。これを行う最善の方法は何ですか?今の私は、私が正しい場所
User.findOne(
{ _id: Mongoose.Types.ObjectId(userId), 'projects.name': data.project },
(err, data) => {
if (err) { throw err; }
console.log(data);
}
);
を照会していますかどうかを確認するためにfindOne
を使用しようとしました。しかし、それは、アレイ内のすべてのプロジェクトを返し、私は私が探しているプロジェクトを選択し、tasks
に要素を追加する方法がわかりませんアレイ。私は
User.update(
{ _id: Mongoose.Types.ObjectId(userId), 'projects.name': data.project },
{ $push: { 'projects.$.tasks': data.task } },
(err, data) => {
if (err) { throw err; }
return reply('success');
}
);