sql >> Database >  >> NoSQL >> MongoDB

Zoeken naar geneste objecttekst in mongoDB

Met het aggregatieraamwerk zou het er zo uit kunnen zien

db.getCollection('yourCollection').aggregate([
    {
        $unwind: '$arr'
    },
    {
        $match: {
            $or: [
                { 'arr.name': /world/i },
                { 'arr.description': /world/i }
            ]
        }
    },
    {
        $project: {
            _id: '$arr._id',
            name: '$arr.name',
            description: '$arr.description'
        }
    }
])

wat resulteert in de volgende uitvoer voor uw voorbeeldgegevens:

{
    "_id" : 1,
    "name" : "Random",
    "description" : "Hello world"
}
{
    "_id" : 2,
    "name" : "World",
    "description" : "This is a random description"
}  

Als u een enkele array nodig heeft met de resulterende documenten zoals weergegeven in uw vraag, kunt u eenvoudig een toArray() ketenen oproep aan het einde van de pijplijn - houd er echter rekening mee dat dit een verhoogd geheugengebruik kan veroorzaken in het geval van grote resultatensets, zoals aangegeven door SSDMS in de reacties.




  1. Projectconfiguratie met Django 1.10, mongodb en Python 3.4.3

  2. Waarom raden de MongoDB-documenten aan om geen DBREF's te gebruiken?

  3. Mongodb kan geen verbinding maken met localhost maar kan wel verbinding maken met het IP-adres van localhost

  4. hoe mongoDB-object-id in java te maken