2016-01-23 2 views
-1

Я новичок в MongoDB/Mongoose. У меня ограниченный массив для пользователя. Как я запрошу для firstName: bob и update pet [0] array?MongoDB/Mongoose Update Embeded Array По номеру элемента

При чтении примеров запрос всегда находится на встроенном массиве документов, так как каждое значение элемента будет уникальным во всей коллекции. Поскольку в моей ситуации это не так, мне нужно запросить внешний документ (например, firstName), а затем обновить элемент по номеру элемента.

Например:

UserModel.update(
    { firstName: "bob" }, 
    {'$set': {'pets.$. 
    //not going to work 

ответ

1

Вы можете попробовать это один

UserModel.findOne({ firstName: "bob" }, function(err, user) { 
    user.pets[0] = // new pets is here. 
    user.save(function(err) {...}); 
+0

ах ... спасибо. Я не знал, что это просто. Я думал, что мне пришлось использовать '$ set' – dman

+1

@dman, позиционный' '' оператор, если вы не знаете позицию элемента в массиве. обратитесь к [this] (https://docs.mongodb.org/manual/reference/operator/update/positional/). – zangw

+0

Будет ли это медленнее, чем просто 'update()', поскольку он возвращает весь документ перед обновлением? – dman

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