使用这样的模式,其中“items”字段包含具有嵌套翻译的子文档数组:
{
"_id" : ObjectId("513740415b51ea0803000001"),
"items" : [
{
"id" : ObjectId("5137407f5b51ea100f000000"),
"title" : {
"en" : "Yes",
"fr" : "Oui",
"es" : "Si"
}
},
{
"id" : ObjectId("5137407f5b51ea100f000003"),
"title" : {
"en" : "No"
}
}
],
}
您如何向特定商品ID添加翻译?
答案 0 :(得分:1)
您可以使用$
positional operator更新文档的特定数组元素。
例如,要添加"de": "nein"
:
db.test.update(
{'items.id': ObjectId("5137407f5b51ea100f000003")},
{$set: {'items.$.title.de': 'nein'}})
$
对象中的$set
表示查询选择参数匹配的items
元素的索引。
答案 1 :(得分:0)
你可以这样做:
db.yourColName.update({"items.id" : "itemId"}, {$set : {"translationField" : "translationValue"}})
在查询的第一部分中,您正在搜索数组中的直接项,并为其设置新字段+值。
就像你已经注意到的那样,Mongo没有静态模式。因此$set
将更新现有字段或创建新字段。这完全取决于您在子查询中设置的字段名称。
要转到直接文档,请使用$
运算符:items.$.title.fr
其中$
代表当前对象。