【发布时间】:2018-02-18 07:22:21
【问题描述】:
我正在使用带有 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”,但我更愿意在参数中声明它并将其传递给服务。
有什么想法吗?欢迎所有方法!
【问题讨论】:
-
这是一个 JavaScript 错误。你的意思是
$set: params。当您执行$set: { params }时,它会扩展为应用"params"作为对象的键名。与写'$set': { 'params': params }非常相似,这当然是您不想要的。params已经是一个对象。你不需要把它包装成一个。 -
是的,你是对的!谢谢!
标签: javascript mongodb