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

Zapytanie agregujące MongoDB — zmiana nazw pól zwracanych z osadzonych dokumentów

Istnieje kilka podejść do tego, ale w dużej mierze zależy to od twojej wersji MongoDB. Nowsze wersje od 2.6 wzwyż obsługują $ mapa operatora, którego możesz użyć w $project robić, co chcesz:

db.friend.aggregate([
    { "$project": {
        "name": 1,
        "buddies": {
            "$map": {
                "input": "$friends",
                "as": "el",
                "in": {
                    "nickName": "$$el.name",
                    "age": "$$el.age"
                }
            }
        }
    }}
])

W poprzednich wersjach używałbyś $unwind do pracy z elementami tablicy i rekonstrukcji za pomocą $grupa :

db.collection.aggregate([
    { "$unwind": "$friends" },
    { "$group": {
        "_id": "$_id",
        "name": { "$first": "$name" },
        "buddies": {
            "$push": {
                "nickName": "$friends.name",
                "age": "$friends.age"
            }
        }
    }}
])

Pierwszy formularz jest nieco bardziej wydajny, ponieważ nie denormalizujesz zawartości tablicy i nie tworzysz większej liczby dokumentów w potoku do przetworzenia.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak połączyć PHP z MongoDB?

  2. W jaki sposób identyfikator maszyny/nazwa hosta jest mapowany/odwzorowywany na 3 bajty w identyfikatorze obiektu?

  3. Jak usunąć dokument wewnątrz tablicy w mongodb za pomocą $pull

  4. Zmień istniejący obiekt w tablicy, ale nadal zachowaj unikalność klucza

  5. Wstaw znacznik czasu Pandy do Mongodb