sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Aggregate Array med två fält

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



  1. Mongoid:använder du mer än en databas?

  2. Skapa en främmande nyckelrelation i Mongoose

  3. Rails 4 och mongoid:skapa programmässigt en fråga med flera OCH- och ELLER-villkor

  4. Vilket är det mest tidseffektiva sättet att serialisera/deserialisera en DataTable till/från Redis?