MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDb $addFields и $match

Следващия път, моля, добавете извадка от вашия документ, за да могат хората да възпроизведат проблема ви. Като казах това, не виждам къде ти е проблемът. Създадох някои данни, за да възпроизведа вашата употреба. Затова добавих следния документ:

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

След това изпълних вашия скрипт (без сортирането) и той работи добре:

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"
        }
    }
])

Фактът, че не получавате резултати, вероятно се дължи на параметрите на вашата заявка. Освен това как може "projectName" имат същите параметри за търсене като вашия "document.id" Съвпадат ли изобщо? Проверете отново линията си за съвпадение:

{"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. Как да изпълним addToSet с официалния драйвер на Go?

  2. MongoDB и Google Cloud Functions VPC Peering?

  3. Грешката на mongoid връща първия документ при извикване на последния?

  4. Как да получа дата, която да съхранявам като дата в MongoDB вместо Int64?

  5. Вземете данни между две дати mongo