sql >> Database teknologi >  >> NoSQL >> MongoDB

Datastore-løsning til tagsøgning

Mongodb kan håndtere, hvad du vil, hvis du opbevarede dine genstande sådan her

{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }

Så vil følgende forespørgsel matche alle de elementer, der har att1 og attr2

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })

men dette vil ikke matche det

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })

forespørgslen returnerer en markør, hvis du ønsker, at denne markør skal sorteres, skal du bare tilføje sorteringsparametrene til forespørgslen sådan

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})

Tag et kig på Avancerede forespørgsler for at se, hvad der er muligt.

Passende indekser kan opsættes som følger

db.mycol.ensureIndex({attributes:1, score:1})

Og du kan få oplysninger om ydeevne ved hjælp af

db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()

Mongo forklarer, hvor mange objekter der blev scannet, hvor lang tid operationen tog og forskellige andre statistikker.



  1. Opdater undersæt af felter med Mongoose

  2. Sådan filtreres array i underdokument med MongoDB

  3. Mongoose:skal et brugerdefineret _id erklæres som et indeks og være unikt

  4. MongoDB 2.6 Indeks opsat, forespørg ved hjælp af $or, $in, med limit og sort