遵循firestore的官方文件:
{
name: "Frank",
favorites: { food: "Pizza", color: "Blue", subject: "recess" },
age: 12
}
// To update favorite color:
db.collection("users").doc("frank").update({
"favorites.color": "Red"
})
我想使用动态键而不是颜色。
db.collection("users").doc("frank").update({
"favorites[" + KEY + "].color": true
});
这当然是不可能的,并且会引发错误。
我一直在尝试这样做:
db.collection("users").doc("frank").update({
favorites: {
[key]: {
color": true
}
}
});
它实际上是用正确的键进行更新,但不幸的是,它正在覆盖其他键(它们正在被删除)。
关于一个潜在陷阱的注意事项:在发现您可以使用点语法更新嵌套字段后,我尝试以同样的方式使用set()
,因为无论对象是否存在,我都需要它来工作:
var updateObj = {['some.nested.property']: 9000};
docRef.set(updateOb, {merge: true});
不幸的是,这不起作用——它设置了一个键为some.nested.property
的属性。不一致,但没关系。
幸运的是,似乎set(updateObj,{merge:true})
会进行深度合并,因此如果将更新对象构造为完全嵌套的对象,那么嵌套对象也会正确合并:
// create the object
db.doc('testCollection/doc').set({p1: {['p2']: {p3: true}}}, {merge: true})
// update the existing object
db.doc('testCollection/doc').set({p1: {['p2']: {p4: true}}}, {merge: true})
// result is now this:
{ p1: { p2: { p4: true, p3: true } } }
此解决方案对我有效:
db.collection('users').doc('frank').update({
[`favorites.${key}.color`]: true
});
我找到了受Firebase解决方案启发的解决方案(将“/”替换为“.”)。
var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;
db.collection("users").doc("frank").update(usersUpdate);
我有一个静态结构的对象: 我想按键更新它的属性。例如,如果我收到 然后我想更新对象,并有: 我该怎么办?我试图创建一个新对象,类似这样: 我不知道如何从变量中设置键和值的名称
mongodb新手,尝试更新文档的多个数组对象字段。没有得到预期的结果 文档结构: 基于id需要更新日期 Spring启动代码 但是当我运行这个查询时,它返回null。有人能帮我吗?谢谢,我也试过了
我正在尝试更新MongoDB中嵌套对象中的一个键值。目前,我的做法是覆盖整个嵌套对象,我如何改变一个键-值对?
我需要更新嵌套在我的用户文档中的一个字段,该字段包含一个part对象数组,以添加新的part。一个part对象如下所示: 所以这意味着$addToset对我的情况没有好处...现在我不知道该怎么办。
假设我们有以下集合,我对此没有什么问题: > 我想增加“item_name”的价格:“my_item_two”,如果它不存在,应该将它追加到“items”数组中。
谁能告诉我我在这里做错了什么?从console.log,我可以看到日期功能正在正常工作。但是,即使在之后,时间戳也不会更新。提前感谢!