sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Aggregate Array med to felter

Brug aggregeringsmarkørens kort( ) metode til at returnere en matrix af ObjectId'er som følger:

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 kort() ville også fungere her:

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

OPDATERING

I pymongo kan du bruge en lambda funktion med kortfunktionen. Fordi kortet forventer, at en funktion sendes ind, er det tilfældigvis også et af de steder, hvor lambda rutinemæssigt optræder:

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. Sådan fjerner du et dokument inde i et array i mongodb ved hjælp af $pull

  2. Begræns listens længde i redis

  3. Kan ikke få mongoose-unique-validator til at virke

  4. Find et mongodb-dokument ved hjælp af en delvis _id-streng