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

Sådan flettes data fra to samlinger i MongoDB

Testkode her

Du vil have en $lookup men du ønsker er ligesom SQL som join, alle felter i roddokumentet, så en afvikling og erstatning af rod tilføjes for at flette i 1 dokument.

Forespørgsel

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. Hvordan befolker man i dette tilfælde Mongoose?

  2. forbindelse til mongoDB

  3. Sådan defineres objekt i array i Mongoose-skema korrekt med 2d geo-indeks

  4. MongoParseError:URI har ikke værtsnavn, domænenavn og tld