sql >> Databasteknik >  >> NoSQL >> MongoDB

Datastore-lösning för taggsökning

Mongodb kan hantera vad du vill, om du lagrade dina objekt så här

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

Då kommer följande fråga att matcha alla objekt som har att1 och attr2

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

men detta kommer inte att matcha det

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

frågan returnerar en markör, om du vill att den här markören ska sorteras, lägg bara till sorteringsparametrarna till frågan så här

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

Ta en titt på Avancerade frågor för att se vad som är möjligt.

Lämpliga index kan ställas in enligt följande

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

Och du kan få prestandainformation med

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

Mongo förklarar hur många objekt som skannades, hur lång tid operationen tog och diverse annan statistik.



  1. C# mongodb drivrutin 2.0 - Hur upphäver man i en bulkoperation?

  2. Hur man får värde från ett MongoDB-dokument

  3. Ta bort post efter id?

  4. MongoDB aggregeras inom daglig gruppering