mongodb уже существует массив добавил еще одно значение запроса - PullRequest
0 голосов
/ 12 июня 2019

У меня есть таблица щелчков уведомлений, подобная этой:

{
    "_id" : ObjectId("5d00d4e1d720cc4cb1b24566"),
    "createdOn" : ISODate("2019-06-12T10:33:05.866Z"),
    "notification_center_id" : [ 
        ObjectId("5c59343523f05e2ff13938d6")
    ],
    "user_id" : ObjectId("5bc5dc03f6d24d29077dd362"),
    "__v" : 0
}

Я хочу проверить, существует ли user_id "5bc5dc03f6d24d29077dd362", а затем добавлен еще один response_center_id в уже существующей записи.

как это

 {
    "_id" : ObjectId("5d00d4e1d720cc4cb1b24566"),
    "createdOn" : ISODate("2019-06-12T10:33:05.866Z"),
    "notification_center_id" : [ 
        ObjectId("5c59343523f05e2ff13938d6"),
        ObjectId("5c5c4610c6d91403f38eda52")
    ],
    "user_id" : ObjectId("5bc5dc03f6d24d29077dd362"),
    "__v" : 0
 }

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

Ответы [ 2 ]

1 голос
/ 12 июня 2019
db.getCollection('test').update(
    {"user_id" : ObjectId("5bc5dc03f6d24d29077dd362")},
    {"$push" : {"notification_center_id" : new ObjectId()}}
)

В своем вопросе вы не упомянули, что делать, если user_id не существует. Так что ничего не делать в этом случае.

После вашего комментария

db.getCollection('test').update(
    {"user_id" : ObjectId("5c59343523f05e2ff13938d6")},
    {
        "$push" : {"notification_center_id" : new ObjectId()},
        "$setOnInsert" : {"createdOn" : new ISODate(), "__v" : 0}
    },
    {"upsert" : true}
)
0 голосов
/ 12 июня 2019

Оператор обновления $ addToSet используется для добавления элемента в массив и сохраняет уникальность значений в массиве.

db.notifications.update({"_id" : ObjectId("5d00d4e1d720cc4cb1b24566")}
, { $addToSet: { notification_center_id: new ObjectId() } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...