MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Tableau d'agrégation MongoDB avec deux champs

Utilisez la map() méthode pour renvoyer un tableau d'ObjectIds comme suit :

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

Le find() map() fonctionnerait ici aussi :

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

MISE À JOUR

Dans pymongo, vous pouvez utiliser un lambda fonction avec la fonction carte. Étant donné que map s'attend à ce qu'une fonction soit transmise, il se trouve également que c'est l'un des endroits où lambda apparaît régulièrement :

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))