Обновите значение поля MongoDB, только если новый providerId не существует - PullRequest
0 голосов
/ 24 мая 2019

У меня есть следующий документ в MongoDB.

{
    "_id" : ObjectId("5ce34ac6a2f25b2448b9b3a3"),
    "userId" : ObjectId("5ce34ac6a2f25b2448b9b3a0"),
    "providers" : [ 
        "1689736266", 
        "1598763690", 
        "1528069614", 
        "1831364272", 
        "1548463045", 
        "1245301159", 
        "1386616399", 
        "1790775971", 
        "1629462130", 
        "1992169783"
    ],
    "countByType" : {
        "doctors" : 6,
        "labs" : 0,
        "hospitals" : 0,
        "imagingCenters" : 0,
        "other" : 4
    }
}

Я не уверен, как проверить новый идентификатор поставщика в массиве провайдеров и обновить, если он не существует, с помощью одной операции запроса.Поэтому сначала мне нужно проверить, существует ли конкретный ProviderId или нет, если он не существует, обновите поле провайдеров, иначе игнорируйте его.

Как я могу реализовать это?

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Согласно документации «Оператор $ addToSet добавляет значение в массив, если только оно не присутствует, и в этом случае $ addToSet ничего не делает с этим массивом».Также будет ли это случай, когда вы пытаетесь добавить несколько значений в массив провайдеров одновременно?Если вы используете $ друг, вам не понадобится $ каждый.

1 голос
/ 24 мая 2019

Я думаю, что вам нужен оператор $ addToSet . Вы можете добавить несколько значений, не беспокоясь о добавлении дубликатов, например:

db.test.update(
 {userId : ObjectId("5ce34ac6a2f25b2448b9b3a0")},
 {$addToSet  : {providers : { $each:["1","1689736266", "23"]} }}
)
...