Gebruik de map()
methode om als volgt een array van ObjectIds te retourneren:
var pipeline = [
{$match: {warehouse_sku: /^1\_/}},
{$group: { "_id": "$_id" } }
],
list_products = db.getCollection('products')
.aggregate(pipeline)
.map(function(doc){ return doc._id });
De find()
cursor's map()
zou hier ook werken:
var query = {'warehouse_sku': /^1\_/},
list_products = db.getCollection('products')
.find(query)
.map(function(doc){ return doc._id });
UPDATE
In pymongo zou je een lambda kunnen gebruiken functie met de kaartfunctie. Omdat map verwacht dat een functie wordt doorgegeven, is het ook een van de plaatsen waar lambda routinematig verschijnt:
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))