如何将文档推送到嵌套在另一个数组中的数组中?
How to push a document in an array nested in another array?
这是我的问题:我有一个文档(我们称之为根),其中包含另一个文档数组(棒),另一个文档数组(叶)。
或者简单地说:root{ stickChain[leaveschain1[ leaf1, leaf2], leaveschain2[ leaf1, leaf2] ]}
我可以访问 root _id、stick _id 或识别每个文档所需的任何内容。
基本上,到目前为止,我取得的最佳结果是,在创建我的树叶文档时,将存储在同一级别,或者换句话说,我已经创建了一个树叶数组根.
我在 javascript 工作并使用 mongoose
这是我用过的线路:
db.collection('root').findOneAndUpdate({ _id: root.id, "stick._id":expTemp._id },{stickChain:{$push: {"leavechain.$": leaf}}})
我这给了我这个结果:root{ leavesChain[leaf1,leaf2], stickchain[1,2,3] }
I've come across something new to me(因为 Mongodb 3.6 有一种处理数组数组的新方法),这是我尝试过的方法:
try{ db.collection('root').findOneAndUpdate(
{ _id: root.id, "stick._id":expTemp._id },
{$push: {"stickChain.$[xpc].leavesChain.$[qac]": leaf}},
{ arrayFilters: [ { "xpc._id": user._id } , { "qac._id": expTemp._id } ]})}
更新
try{ db.collection('root').findAndModify(
{$push: {"root.$[cv].stickChain.$[xpc].leavesChain.$[qac]": leaf}},
{ arrayFilters: [ {"cv._id":user.cv} ,{ "xpc._id": user._id } , { "qac._id": expTemp._id } ],
upsert:true})
.catch(error => console.error(error))
}catch{}
这给了我一种新的错误:MongoError:必须指定更新或删除=true
问题是我不熟悉该怎么做,但我知道我想做什么:我想在 [=42= 中获取的文档中的特定数组中插入一个“叶子” ].也许不是最好的做法,所以欢迎任何提示:)
我是这样拆分我的 dument 的:
- root[stickChain _id]
- stick[leavesChain[叶子]]
感谢 Andrey Popov 的解释
这是我的问题:我有一个文档(我们称之为根),其中包含另一个文档数组(棒),另一个文档数组(叶)。
或者简单地说:root{ stickChain[leaveschain1[ leaf1, leaf2], leaveschain2[ leaf1, leaf2] ]}
我可以访问 root _id、stick _id 或识别每个文档所需的任何内容。
基本上,到目前为止,我取得的最佳结果是,在创建我的树叶文档时,将存储在同一级别,或者换句话说,我已经创建了一个树叶数组根.
我在 javascript 工作并使用 mongoose
这是我用过的线路:
db.collection('root').findOneAndUpdate({ _id: root.id, "stick._id":expTemp._id },{stickChain:{$push: {"leavechain.$": leaf}}})
我这给了我这个结果:root{ leavesChain[leaf1,leaf2], stickchain[1,2,3] }
I've come across something new to me(因为 Mongodb 3.6 有一种处理数组数组的新方法),这是我尝试过的方法:
try{ db.collection('root').findOneAndUpdate(
{ _id: root.id, "stick._id":expTemp._id },
{$push: {"stickChain.$[xpc].leavesChain.$[qac]": leaf}},
{ arrayFilters: [ { "xpc._id": user._id } , { "qac._id": expTemp._id } ]})}
更新
try{ db.collection('root').findAndModify(
{$push: {"root.$[cv].stickChain.$[xpc].leavesChain.$[qac]": leaf}},
{ arrayFilters: [ {"cv._id":user.cv} ,{ "xpc._id": user._id } , { "qac._id": expTemp._id } ],
upsert:true})
.catch(error => console.error(error))
}catch{}
这给了我一种新的错误:MongoError:必须指定更新或删除=true
问题是我不熟悉该怎么做,但我知道我想做什么:我想在 [=42= 中获取的文档中的特定数组中插入一个“叶子” ].也许不是最好的做法,所以欢迎任何提示:)
我是这样拆分我的 dument 的:
- root[stickChain _id]
- stick[leavesChain[叶子]]
感谢 Andrey Popov 的解释