MongoDB Как удалить значение из массива, если существует, иначе добавить - PullRequest
0 голосов
/ 04 мая 2018

у меня есть документ

 {
    "_id" : ObjectId("5aebf141a805cd28433c414c"),
    "forumId" : ObjectId("5ae9f82989f7834df037cc90"),
    "userName" : "Name",
    "usersLike" : [ 
        "1","2"
    ],
    "comment" : "Comment",
}

Я хочу удалить значение из массива usersLike, если значение существует, или добавить, если значение не существует.

Например:

Если я попытаюсь вставить 1 в usersLike, он должен вернуть

{
    "_id" : ObjectId("5aebf141a805cd28433c414c"),
    "forumId" : ObjectId("5ae9f82989f7834df037cc90"),
    "userName" : "Name",
    "usersLike" : [ 
        "2"
    ],
    "comment" : "Comment",
}

Как я могу запросить это .. ??

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Mongodb не поддерживает условное обновление push или pull. Однако вы все еще можете сделать это с помощью поиска db.collectionName.find({_id:ObjectId("597afd8200758504d314b534"),usersLike:{$in:["1"]}}).pretty(), если идентификатор существует у usersLike, чем pull else push.

Или вы используете запрос на обновление, чтобы получить как: db.collectionName.update({_id:ObjectId("597afd8200758504d314b534"), usersLike:{$in:["1"]}},{$pull:{'usersLike':"1"}}, {multi: true}) А для отправки вы можете использовать: db.collectionName.update({_id:ObjectId("597afd8200758504d314b534"), usersLike:{$nin:["1"]}},{$push:{'usersLike':"1"}}, {multi: true})

0 голосов
/ 04 мая 2018

db.collectionName.update ({_ id: ObjectId ("597afd8200758504d314b534")}, {$ pull: {'usersLike': "1"}}, {multi: true})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...