MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDb $addFields i $match

Następnym razem dodaj próbkę swojego dokumentu, aby inne osoby mogły odtworzyć Twój problem. Powiedziawszy, że nie widzę, gdzie jest twój problem. Stworzyłem trochę danych, aby odtworzyć twój przypadek użycia. Dodałem więc następujący dokument:

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

Następnie wykonałem twój skrypt (bez sortowania) i działa dobrze:

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

Brak wyników jest prawdopodobnie spowodowany parametrami żądania. Poza tym w jaki sposób "projectName" mieć takie same parametry wyszukiwania jak Twój "document.id" Czy w ogóle się zgadzają? Sprawdź ponownie potok dopasowań:

{"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. W mongodb znasz indeks elementu tablicy dopasowany do operatora $in?

  2. Rozmiary plików MongoDB GridFS są ogromne dla stosunkowo małych plików

  3. Agregat MongoDB z PHP - pogrupuj według daty

  4. Przechowuj obrazy w Mongodb, serwuj je za pomocą Nodejs

  5. Jak mogę $addToSet obiekt do tablicy i $sortować za pomocą MongoDB?