【发布时间】:2020-11-21 10:25:13
【问题描述】:
我有 2 种类型的集合,但我无法让它在其中任何一种上工作,它们是相似的:
科尔-A:
{
"_id": {...},
"something that doesnt matter": {...},
"var1": {
"var2": [{...}, {...}, {...}, {...}, {...}],
"var3": [{...}, {...}, {...}, {...}, {...}]
},
"something that doesnt matter": {...}
}
我正在尝试将对象推入和拉出 var2 数组, 我尝试了多种方法,例如:
await db.collection("coll").findOneAndUpdate(
{ var1: { $exists: true } },
{ $push: { var1: { var2: object} } }
);
但是它说 var1 不是一个数组,当我用 pull 尝试它时,它清空了我的整个集合 xD 对于拉动,我知道必须删除的每个对象都有一个唯一的 ID。
科尔-B:
[
{
"_id": {...},
"uniqueId": "01",
"settings": {
"var1": {
"var2": [{...}, {...}, {...}, {...}, {...}],
"var3": {...}
},
"var3": [{...}, {...}, {...}, {...}, {...}]
},
"something that doesnt matter": {...}
},
{
"_id": {...},
"uniqueId": "02",
"settings": {
"var1": {
"var2": [{...}, {...}, {...}, {...}, {...}],
"var3": {...}
},
"var3": [{...}, {...}, {...}, {...}, {...}]
},
"something that doesnt matter": {...}
}
]
Coll-B 有点不同,它一开始有多个对象,它们都有一个唯一的 ID,但在我们需要 Push 和 Pull 的 var2 数组中,所有对象也有唯一的 ID。
如果有人对我们如何完成这项工作有任何想法,请告诉我们!因为现在我们正在 $set 重新对整个数组进行处理,当多个同时运行时只有最后一个更新,所以我真的需要使用推拉。
【问题讨论】:
-
尝试使用点 (.) 表示法以到达要推/拉的数组字段示例:
{ $push: { "var1.var2": { object } } }或{ $pull: { "var1.var2": { object } } }。
标签: arrays mongodb typescript