O MongoDB não retorna os resultados de atualizações em nível de campo como um $addToSetoperador; a atualização geral do documento é bem-sucedida ou falha.
No entanto, supondo que você esteja usando o MongoDB 2.6 ou mais recente, você pode inferir se a atualização foi não operacional inspecionando o WriteResultretorno em update/upsert.
Como a única atualização possível era no array, nModified:0indica que "manga" já existia.
Atualizando com mais campos
Se você combinar várias atualizações de campo, não saberá qual campo foi realmente atualizado. Nesse caso, você pode corresponder especificamente a documentos em que o valor da matriz ainda não está definido:
O MongoDB não retorna os resultados de atualizações em nível de campo como um
$addToSet
operador; a atualização geral do documento é bem-sucedida ou falha.No entanto, supondo que você esteja usando o MongoDB 2.6 ou mais recente, você pode inferir se a atualização foi não operacional inspecionando o
WriteResult
retorno em update/upsert.Exemplo abaixo usando MongoDB 3.2.
Dados de teste:
O valor foi adicionado à matriz
Adicione "manga" ao array saboroso no
a
documento:Como a única atualização possível era no array,
nModified:1
indica que "mango" foi adicionado.O valor já existe na matriz
Adicione "manga" ao array saboroso no
b
documento:Como a única atualização possível era no array,
nModified:0
indica que "manga" já existia.Atualizando com mais campos
Se você combinar várias atualizações de campo, não saberá qual campo foi realmente atualizado. Nesse caso, você pode corresponder especificamente a documentos em que o valor da matriz ainda não está definido: