MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pencocokan pipa MongoDB $lookup dengan _id tidak berfungsi

Saya juga mengalami masalah saat menggunakan $lookup dengan luwak untuk mencoba mencocokkan _id karena koleksi saya menyimpan referensi sebagai String dan bukan ObjectId

Model A:{_id:ObjectId("xxx"), b_id:"eeeee"}

Model B:{_id:ObjectId("eeeee")}

MyCollectionA.aggregate([
   {
      $lookup: {
        from: "collectionb",
        let: {id: "$b_id"},
        pipeline: [{$match: {$expr: {$eq: ["$_id", "$$id"]}}}],
        as: b
      }
])

Dalam contoh ini b tidak pernah diisi karena $$id tidak dianggap sebagai ObjectId

Cukup tambahkan proyek untuk mengubah $$id menjadi objectId dan fungsinya

MyCollectionA.aggregate([
   {
      $lookup: {
        from: "collectionb",
        let: {id: "$b_id"},
        pipeline: [
           {$project: {_id: 1, bid: {"$toObjectId": "$$id"}}},
           {$match: {$expr: {$eq: ["$_id", "$bid"]}}}
        ],
        as: b
      }
])

Atau dengan foreignField, localField:

MyCollectionA.aggregate([
   {
      $project:{
        _id: 1,
        b_id: {"$toObjectId": "$b_id"}
      }
   },
   {
      $lookup: {
        from: "collectionb",
        localField: "b_id",
        foreignField: "_id",
        as: b
      }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. luwak:temukan dokumen terbaru

  2. Kembalikan koleksi yang diperbarui dengan Mongoose

  3. Pencadangan MongoDB Otomatis

  4. Unduhan file tidak berfungsi dengan nodejs gridfs

  5. MongoDB:rentang kueri pada waktu penyisipan dengan _id dan ObjectID