1

$addToSet似乎只添加到数组中,是否可以将哈希添加到哈希中?

{
    "a"=>"1",
    "b"=>"2",
    "c"=>{"d"=>"3"}
}

{
    "a"=>"1",
    "b"=>"2",
    "c"=>{"d"=>"3","e"=>"4"}
}

在红宝石中将是首选。但我可以接受任何可以帮助我解决这个问题的自动取款机。

4

2 回答 2

3

是的,$addToSet本来是要在阵列上使用的。你需要$set和点符号

db.collection.update(query, {$set: {'c.e': '4'}});
于 2012-05-25T16:43:28.303 回答
1

您不需要$addToSet,因为散列(即 BSON 对象)只能具有任何给定键之一——它们已经设置了关于键的语义(但不是值)。

要更新 BSON 对象中的子对象,您应该$set按照 Sergio 的建议使用。

于 2012-05-25T17:21:56.490 回答