MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Aggregatarray mit zwei Feldern

Verwenden Sie die map() Methode, um ein Array von ObjectIds wie folgt zurückzugeben:

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

Der find() Cursors map() würde auch hier funktionieren:

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

AKTUALISIEREN

In Pymongo könnten Sie ein Lambda verwenden Funktion mit der Kartenfunktion. Da map erwartet, dass eine Funktion übergeben wird, ist es auch einer der Orte, an denen Lambda routinemäßig erscheint:

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