MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB агрегатен масив с две полета

Използвайте map() на курсора за агрегиране ) метод за връщане на масив от ObjectIds, както следва:

var pipeline = [
    {$match: {warehouse_sku: /^1\_/}},
    {$group: { "_id": "$_id" } }
],
list_products = db.getCollection('products')
                  .aggregate(pipeline)
                  .map(function(doc){ return doc._id });

find() map() ще работи и тук:

var query = {'warehouse_sku': /^1\_/},
    list_products = db.getCollection('products')
                      .find(query)
                      .map(function(doc){ return doc._id });

АКТУАЛИЗАЦИЯ

В pymongo можете да използвате ламбда функция с функцията карта. Тъй като map очаква да бъде предадена функция, това също се оказва едно от местата, където ламбда се появява рутинно:

import re
regx = re.compile("^1\_", re.IGNORECASE)
products_cursor = db.products.find({"warehouse_sku": regx})
list_products = list(map((lambda doc: doc["_id"]), products_cursor))



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Имената на полета FieldPath не може да съдържат „.“ в $група

  2. Spring MongoDB Repository работи само в някои случаи

  3. Недостатък на производителността при използване на slug като първичен ключ/_id в mongo?

  4. MongoDB да използва разделяне с $lookup оператор за агрегиране

  5. Форматиране на ISODate от Mongodb