2016-10-13 2 views
0

Так что я довольно простой кусок кода следующим образом

db.get().collection('bars').insert({ 
        barID: req.body.button, 
       }, { 
        $push: { 
         usersfbID: req.body.profileUser[0].facebookID 
        } 
       }, function(err, doc) { 
        if (err) { 
         throw err; 
        } 
        if (doc) { 
         console.log('Had to create a new document for this bar'); 
         console.log(doc); 
         //callback(null, doc); 
        } 
       }); 

Итак, я просто проверяю, чтобы увидеть, если документ для бара существует, и если я не создаю этот документ. И я хочу вставить массив для поля usersfbID, чтобы я мог хранить всех пользователей, идущих в панель.

Однако, когда я запускаю код, я не получаю сообщение об ошибке, и он говорит, что документ вставлен, но когда документ регистрируется, он не имеет поля userfbID.

Так что я делаю неправильно? Оператор $ push работает только с методом обновления db? Если да, как мне вставить массив для этого поля?

ответ

2

Да, он работает с методами обновления

Reference> Операторы>Update Operators> Массивы Update Операторы> толчок

Вставка нового элемента означает подачу поля $. В этом случае нет операции $ push, так как массив записи только что создан и может быть явно установлен (usersfbID:[req.body.profileUser[0].facebookID], что означает, что вы ожидаете несколько fbId для этого бара). Обновление массива в элементе коллекции не является вставкой, это обновление.

+0

Извините, этого не произошло. Что вы имеете в виду: «Нет необходимости вводить $ push, поскольку массив записи только что создан». –

+0

Извините, не понял, что вы делаете при первом чтении. Вы обновляете массив 'usersfbID'' bar'. Не вставлять в нее новую запись. – Flint

+0

Нет, я недавно создаю userfbID в баре. Потому что я создаю документ для этого бара, используя ту же функцию. –

0

Таким образом, просто дать ответ на вопрос, который я столкнулся .. Да, вы можете использовать только $ толчок или $ addToSet с операцией обновления на документе MongoDB

Вот как я реализовано код.

db.get().collection('bars').update({ 
     barID: req.body.button, 
    }, { 
     $addToSet: { 
      usersfbID: req.body.profileUser[0].facebookID, 
      usersDocID: req.body.profileUser[0]._id 
     } 
    }, { 
     upsert: true 
    }, function(err, doc) { 
     if (err) { 
      console.log('There is an error here'); 
      throw err; 
     } 
     if (doc) { 
      console.log('Had to create a new document for this bar'); 
      callback(null, doc); 
     } 
    }); 

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

Смежные вопросы