我需要更新嵌套在我的用户文档中的一个字段,该字段包含一个part对象数组,以添加新的part。一个part对象如下所示:
{
partId: 871838,
partNum: '87087',
partName: 'Brick Special 1 x 1 with Stud on 1 Side',
colorId: 0,
colorName: 'Black',
quantity: 10,
partImg: 'https:...'
}
await User.updateOne(
{ username: username },
{ $addToSet: { parts: { $each: req.body.parts } } }
);
所以这意味着$addToset对我的情况没有好处...现在我不知道该怎么办。
我张贴了一个答案,因为我设法得到了我想要的结果,我想要一些反馈。它工作得很好,但感觉蛮力和有点讨厌:
const incomingParts = req.body.parts;
const _ownedParts = await User.findOne(
{ username: username },
{ parts: 1, _id: 0 }
);
let ownedParts: IPart[] = [];
const newParts: IPart[] = [];
//if statement for TS
if (_ownedParts) {
ownedParts = _ownedParts.parts;
}
let partsToAdd;
if (ownedParts.length === 0) {
//if the user owns no parts, just add the whole lot
partsToAdd = [...req.body.parts];
} else {
incomingParts.forEach((incoming: IPart) => {
const ownedIdx = ownedParts.findIndex((owned: IPart) => {
return incoming.partId === owned.partId;
});
if (ownedIdx !== -1) {
ownedParts[ownedIdx].quantity += incoming.quantity;
} else {
newParts.push(incoming);
}
});
partsToAdd = [...ownedParts, ...newParts];
}
await User.updateOne(
{ username: username },
{ $set: { parts: partsToAdd }, $push: { sets: setNum } }
);
如果有一种使用mongodb运算符或聚合的方法,我很乐意看到。
我正在尝试更新嵌套数组中的值,但无法使其工作。 我的对象是这样的 提前谢谢!
我正在使用平均堆栈在网格中显示以下数组。 嵌套数组:
问题内容: 我正在尝试更新嵌套数组中的值,但无法使其正常工作。 我的对象是这样的 我需要将值推送到“ answeredBy”数组。 在下面的示例中,我尝试将“成功”字符串推到“ 123 _id”对象的“ answeredBy”数组中,但是它不起作用。 我找到了此链接,但其答案仅表示我应该使用类似结构的对象而不是数组。这不适用于我的情况。我真的需要将我的对象嵌套在数组中 如果您能在这里帮助我,那就太
我有以下JSON: 我希望能够将内容推送到与迭代 2 关联的任务数组中。如何正确查询并插入到正确的位置?这就是我到目前为止所拥有的,但它总是插入到与迭代 1 关联的任务数组中。 我已经看到了这个:MongoDB嵌套数组查询,但他只是试图推送到一个嵌套数组。
我正在尝试更新MongoDB中嵌套对象中的一个键值。目前,我的做法是覆盖整个嵌套对象,我如何改变一个键-值对?
mongodb新手,尝试更新文档的多个数组对象字段。没有得到预期的结果 文档结构: 基于id需要更新日期 Spring启动代码 但是当我运行这个查询时,它返回null。有人能帮我吗?谢谢,我也试过了