sql >> Database >  >> NoSQL >> MongoDB

MongoDB Aggregate Array met twee velden

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



  1. Gegevens groeperen met behulp van mongo-sjabloon

  2. Is het de beste manier van Java om datums zo lang in uw database op te slaan?

  3. Redis store (of een database?) Lock-mechanisme (NodeJS)

  4. Toegang tot de Meteor-productiedatabase