MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongodb Próbuję uzyskać wybrane pola do powrotu z agregatu

Mówiąc ogólnie, $project opiera się na „ścieżce bezwzględnej” do właściwości pola w dokumencie po „prawej stronie”. Skróty, takie jak 1 są tylko tam, gdzie ten element jest faktycznie najwyższym poziomem dokumentu.

Musisz także mieć możliwość zachowywania pól, gdy $group , więc tutaj używa się różnych operatorów grupujących, takich jak $first i $addToSet lub $push aby zachować informacje, które wyciągasz z wewnętrznej tablicy. I musisz $unwind również dwa razy, ponieważ łączysz „typy” w różnych dokumentach, a nie chcesz tylko $first w tym przypadku.

OrderModel.aggregate([
    { "$unwind": "$products" },
    { "$unwind": "$products.types" },
    { "$group": {
        "_id": "$products.name",
        "active": { "$first": "$products.active" },
        "types": { "$addToSet": "$products.types" },
        "quantity": { "$sum": 1 }
    }},
    { "$project": {
        "_id": 0,
        "name": "$_id",
        "active": 1,
        "types": 1,
        "quantity": 1
    }}
],function(err,results) {

});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Implementacja dla wszystkich klas BsonIgnoreExtraElements

  2. mongodb nie może uruchomić się w systemie Windows?

  3. Mongoose znalazła zwracający dziwny przedmiot

  4. Importuj dane CSV jako tablicę w MongoDB za pomocą mongoimport

  5. Czy Azure Cosmos DB nie obsługuje unikatowego indeksu MongoDB/Mongoose?