Använd aggregeringsmarkörens karta( )
metod för att returnera en array av ObjectIds enligt följande:
var pipeline = [
{$match: {warehouse_sku: /^1\_/}},
{$group: { "_id": "$_id" } }
],
list_products = db.getCollection('products')
.aggregate(pipeline)
.map(function(doc){ return doc._id });
find()
markörens karta()
skulle fungera här också:
var query = {'warehouse_sku': /^1\_/},
list_products = db.getCollection('products')
.find(query)
.map(function(doc){ return doc._id });
UPPDATERA
I pymongo kan du använda en lambda funktion med kartfunktionen. Eftersom kartan förväntar sig att en funktion ska skickas in, råkar det också vara en av de platser där lambda rutinmässigt dyker upp:
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))