[英]Javascript MongoDB dot notation issue for embedded document
我正在使用带有 Javascript 的 MongoDB。 我正在尝试声明以下参数:
params = {
title: title,
description: description,
"media.image": image,
feedUpdated: new Date()
};
然后我使用包含 $set 使用的服务运行查询,如下所示:
collection.update({
_id: ObjectId(id)
}, {
$set: {
params
}
}, function(e, updated) {
cb(e, updated);
});
但我收到以下错误:
MongoError:“params.media.image”中的虚线字段“media.image”对存储无效。
我认为问题是由于这样一个事实,即通过使用引号声明对象,它将其声明为对象键“media.image”,而不是将其保留为字符串。 根据 MongoDB $set文档:
要在嵌入文档或数组中指定 a,请使用点表示法。
https://docs.mongodb.com/manual/reference/operator/update/set/
从技术上讲,我可以手动编写查询以包含“media.image”,但我更愿意在参数中声明它并将其传递给服务。
有什么想法吗? 欢迎所有方法!
使用 MongoDB 时,不允许在键中使用点。 我可以建议两种方法:
// #1 camelCase
params = {
title: title,
description: description,
mediaImage: image,
feedUpdated: new Date()
}
// #2 object
params = {
title: title,
description: description,
media: { image: image },
feedUpdated: new Date()
}
借助 JavaScript,由于 ECMAScript 2015 计算属性名称,您可以通过在相关键周围添加方括号 [] 来使用点表示法。 在您的情况下,它将是:
params = {
title: title,
description: description,
["media.image"]: image,
feedUpdated: new Date()
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.