sql >> Database >  >> NoSQL >> MongoDB

Door komma's gescheiden gegevens zoeken in mongodb

Zou zeggen:gebruik Map-Reduce om een ​​aparte collectie te maken waarin het genre is opgeslagen als een array met waarden die afkomstig zijn van de gesplitste, door komma's gescheiden tekenreeks, die u vervolgens de taak Map-Reduce kunt uitvoeren en query's op de uitvoerverzameling kunt beheren.

Ik heb bijvoorbeeld enkele voorbeelddocumenten gemaakt voor de foo collectie:

db.foo.insert([
    {genre: 'Action, Adventure, Sci-Fi'},
    {genre: 'Thriller, Romantic'},
    {genre: 'Comedy, Action'}
])

De volgende map/reduceer-bewerking zal dan de collectie produceren van waaruit u performante queries kunt toepassen:

map = function() {
    var array = this.genre.split(/\s*,\s*/);
    emit(this._id, array);
}

reduce = function(key, values) {
    return values;
}

result = db.runCommand({
    "mapreduce" : "foo", 
    "map" : map,
    "reduce" : reduce,
    "out" : "foo_result"
});

Query's zouden eenvoudig zijn, gebruikmakend van de query's met een index met meerdere sleutels op de value veld:

db.foo_result.createIndex({"value": 1});

var genre = ['Action', 'Adventure'];
db.foo_result.find({'value': {'$in': genre}})

Uitvoer :

/* 0 */
{
    "_id" : ObjectId("55842af93cab061ff5c618ce"),
    "value" : [ 
        "Action", 
        "Adventure", 
        "Sci-Fi"
    ]
}

/* 1 */
{
    "_id" : ObjectId("55842af93cab061ff5c618d0"),
    "value" : [ 
        "Comedy", 
        "Action"
    ]
}



  1. MeteorJS - Afbeeldingen (FS.collection) koppelen aan hun relevante document in de MongoDB-collectie

  2. Hoe verander ik MongoDB-query in een JSON?

  3. zeilen-mongo auth fout in zeilen 0.10

  4. Repository-query met een List-parameter in Spring Data MongoDB