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

MongoDb $addFields dan $match

Lain kali tolong tambahkan contoh dokumen Anda sehingga orang dapat mereproduksi masalah Anda. Setelah mengatakan bahwa saya tidak melihat di mana masalah Anda. Saya membuat beberapa data untuk mereproduksi usecase Anda. Jadi saya menambahkan dokumen berikut:

{ 
    "_id" : ObjectId("5a0d5d376c9b762a7c035ec4"), 
    "projectName" : "some stack test", 
    "price" : NumberInt(45), 
    "propertyId" : {
        "prefix" : "a", 
        "number" : "7"
    }
}

Kemudian saya mengeksekusi skrip Anda (tanpa pengurutan) dan berfungsi dengan baik:

db.yourCollectionName.aggregate([
    {
        $project: {
            "projectName": 1,
            "price": 1,
            "document": '$$ROOT'
        }
    },
    {
        $addFields: {
            "document.id": {
                $concat: ['$document.propertyId.prefix', '$document.propertyId.number']
            }
        }
    },
    {
        $match: {
            $and: [{
                $or: [{
                        "projectName": {
                            $regex: '.*' + "some stack test"
                        }
                    },

                    {
                        "document.id": {
                            $regex: '.*' + "a" + '.*',
                            $options: "7"
                        }
                    }
                ]
            }]

        }
    },
    {
        $replaceRoot: {
            newRoot: "$document"
        }
    }
])

Fakta bahwa Anda tidak mendapatkan hasil mungkin karena parameter permintaan Anda. Selain itu bagaimana "projectName" memiliki parameter pencarian yang sama dengan "document.id" your Anda Apakah mereka cocok? Periksa saluran kecocokan Anda lagi:

{"projectName": {$regex: '.*' + req.query.search + '.*', $options: "i"}},       
{'document.id': {$regex: '.*' + req.query.search + '.*', $options: "i"}}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengurutkan berdasarkan bidang array maksimum, naik atau turun

  2. Cara membuat peering antara MongoDB Atlas dan Aplikasi Node Lingkungan Standar Google App Engine

  3. node.js tidak dapat menemukan modul 'mongodb'

  4. Dapatkan ukuran semua dokumen dalam kueri

  5. Jalankan pengurangan peta untuk semua kunci dalam koleksi - mongodb