Как обновить mongodb в двух коллекциях

#mongodb #mongodb-query

Вопрос:

У меня есть следующий запрос TSQL. Как обновить то же самое в базе данных Mongo.

Сначала найдите количество продуктов на основе поставщика, а затем обновите количество таблиц поставщиков на основе количества продуктов, доступных в таблице продуктов.

 Update Vendor
set Vcnt= p.cnt
from (select VendorId,count(*) cnt from Product
group by VendorId) p where Vendor.id=p.VendorId
 

Ответ №1:

Вы можете использовать агрегат для группировки количества по VendorId . Затем повторите совокупный результат по каждому, чтобы обновить Vendor коллекцию.

Пример кода:

 db.Product.aggregate([
  {
    "$group": {
      "_id": "$VendorId",
      "cnt": {
        "$sum": 1.0
      }
    }
  }
]).forEach(function(result){
    db.Vendor.update({
        _id : result._id
    }, {
        $set: {
            "Vcnt" : result.cnt
        }
    })
})