sql >> Database >  >> NoSQL >> MongoDB

Gegevens uit twee verzamelingen samenvoegen in MongoDB

Test code hier

U wilt een $lookup maar je wilt is als SQL-achtige join, alle velden in het root-document, zodat een ontrollen en vervangen root wordt toegevoegd om samen te voegen in 1 document.

Zoekopdracht

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. mongo .find retour specifiek veld alleen voor alle gebruikers

  2. Haal één element op uit een reeks objecten die deel uitmaken van één document (mangoest)

  3. MongoDB geografische afstand/radius tot bruikbare eenheden

  4. Mongoose-filter op basis van dynamische datumsleutel met waarde