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

Jak połączyć dane z dwóch kolekcji w MongoDB

Kod testowy tutaj

Chcesz $lookup ale chcesz jest podobny do SQL jak łączenie, wszystkie pola w dokumencie głównym, więc odwijanie i zastępowanie root jest dodawane, aby scalić w 1 dokumencie.

Zapytanie

db.user_relations.aggregate([
  {
    "$match": {
      "$expr": {
        "$eq": [
          "$userId",
          "userId1"
        ]
      }
    }
  },
  {
    "$unwind": {
      "path": "$friendsArray"
    }
  },
  {
    "$sort": {
      "friendsArray.lastTimeStamp": 1
    }
  },
  {
    "$limit": 10
  },
  {
    "$replaceRoot": {
      "newRoot": "$friendsArray"
    }
  },
  {
    "$lookup": {
      "from": "users",
      "localField": "userId",
      "foreignField": "_id",
      "as": "joined__"
    }
  },
  {
    "$unwind": {
      "path": "$joined__"
    }
  },
  {
    "$replaceRoot": {
      "newRoot": {
        "$mergeObjects": [
          "$joined__",
          "$$ROOT"
        ]
      }
    }
  },
  {
    "$project": {
      "joined__": 0
    }
  }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb java api:WriteResult#getN()

  2. Sortowanie według maksymalnego pola tablicy, rosnąco lub malejąco

  3. Błąd Express/Node.js:Błąd odniesienia:Nie zdefiniowano res

  4. mongodb - $lookup potok używający COLLSCAN zamiast indeksu

  5. Nie można zdeserializować ciągu z BsonType ObjectId w MongoDb C#