我将根据提供的键更新mongoose文档的一些字段。例如,当我们在JSON中呈现mongoose文档时。
user: {
address: {
city: "city"
country: "country"
}
}
和更新参数,如下所示。
address: {
city: "city_new"
}
当我这样运行mongoose api时。
let params = {
address: {
city: "city_new"
}
}
User.set(param)
它替换了整个地址对象,最终结果是
user: {
address: {
city: "city_new"
}
}
它只是替换地址字段,但我想只更新城市字段。这是理想的结果。
user: {
address: {
city: "city_new"
country: "country"
}
}
谢谢
当嵌套对象具有更复杂的层次结构时,我们如何解决这一问题,而不手动指示像Address.city.Field1.Field2这样的字段。
正如大多数答案所暗示的,您必须使用点表示法来更新嵌入的文档,并且为了回答您的上述问题,使用以下helper方法,该方法应用递归将给定对象转换为其点表示法:
function convertToDotNotation(obj, newObj={}, prefix="") {
for(let key in obj) {
if (typeof obj[key] === "object") {
convertToDotNotation(obj[key], newObj, prefix + key + ".");
} else {
newObj[prefix + key] = obj[key];
}
}
return newObj;
}
let params = {
address: {
city: {
location: {
street: "new street"
}
}
}
};
const dotNotated = convertToDotNotation(params);
console.log(JSON.stringify(dotNotated, null, 4));
假设我们有以下集合,我对此没有什么问题: > 我想增加“item_name”的价格:“my_item_two”,如果它不存在,应该将它追加到“items”数组中。
我正在尝试更新MongoDB中嵌套对象中的一个键值。目前,我的做法是覆盖整个嵌套对象,我如何改变一个键-值对?
我想在具有指定 URL 的相应文档中将嵌套的“已爬行”更新为 True。 我对mongodb相当陌生,我似乎无法弄清楚这一点,非常感谢任何帮助。
将mongodb与pymongo一起使用,我有以下文档: 我想更新示例子文档(这是一个数组元素,因为可能有多个示例)。我有以下代码,但它不工作... 谁能告诉我这个有什么问题吗?
我有一个mongodb集合的mongoose模式,我将其定义如下: 在数据库集合中,我当前有一个文档,它包含除以外的所有属性的值,用于测试目的。我有一个服务器endpoint,当被调用时,它应该发出一个PUT请求来更新文档并向sketches数组中添加一个对象: 在这个web服务中,我基本上试图通过用户名选择用户文档,用户名作为参数传递给url字符串,如下所示: 由于某种原因,当我尝试使用具有以下
我有一个模型看起来是这样的: 我正在使用存储库模式,下面是我的代码片段: 这实际上会引发以下错误: 我目前的做法 当前对我有效的是在更新嵌套对象时使用。然而,这提出了几点考虑: 需要额外的代码来获取整个文档、解析和更新必需的字段 由于在文档级别上工作,因此它还将更新文档中未更改的部分,这并不理想。