Ответы пользователя по тегу MongoDB
  • Как правильно обновить данные в MongoDB?

    YarkoDzech
    @YarkoDzech
    будучи трезвым, сдержи все свои пьяные обещания!
    $push просто добавляет данные в массив
    $addToSet добавляет с заменой

    tag = ['four', 'five']
    db.collection.update({searchtags: "anything"}, {$push: {tag: ['one', 'two', 'three', 'four']}})
    tag = ['one', 'two', 'three', 'four', 'four', 'five']

    db.collection.update({searchtags: "anything"}, {$addToSet: {tag: ['one', 'two', 'three', 'four']}})
    tag = ['one', 'two', 'three', 'four', 'five']

    Через точку можно пушить прямо в подмасив массива.
    Ответ написан
    2 комментария
  • Как заставить Backbone понимать id mongodb?

    YarkoDzech
    @YarkoDzech Автор вопроса
    будучи трезвым, сдержи все свои пьяные обещания!
    Значит так.
    Согласно мыслей, которые описали товарищи выше.

    Исходя из условий что backEnd у нас принимающая сторона для изменений в базе и не более, то:

    Backbone GET
    через find() получаем стек документов, дальше через foreach пакуем каждый документ ($example) (или определенные поля) в json попутно закинув туда id которое равно $example['_id']->__toString()

    Backbone POST
    при создании документа есть метод получения его _id:
    $example = $someCollection->insertOne(/../);
    $idExample = $example->getInsertedId();
    Запаковываем полученный только что $idExample в прилетевший нам json, тем же методом:
    $idExample->__toString()
    и отправляем json обратно на сторону backBone

    Backbone PUT и DELETE
    На сторону backEnd прилетает id в виде строки, перепаковываем строку в ObjectID
    $input = json_decode(file_get_contents('php://input'));
    $objId = new MongoDB\BSON\ObjectID($input->id);
    *штатного метода не нашел

    И уже по этому $objId апдейтим или удаляем документ

    В принципе.. для связки костыль с нескольких строк, без дополнительных бубнов с инкрементами или дополнительными запрос-апдейт.
    Ответ написан
    Комментировать