sql >> Databáze >  >> NoSQL >> MongoDB

Řešení úložiště dat pro vyhledávání značek

Mongodb zvládne, co chcete, pokud jste své objekty uložili takto

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

Potom bude následující dotaz odpovídat všem položkám, které mají att1 a attr2

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

ale toto se tomu nevyrovná

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

dotaz vrátí kurzor, pokud chcete, aby byl tento kurzor seřazen, pak stačí přidat parametry řazení do dotazu takto

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

Podívejte se na Pokročilé dotazy abyste viděli, co je možné.

Vhodné indexy lze nastavit následovně

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

A můžete získat informace o výkonu pomocí

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

Mongo vysvětluje, kolik objektů bylo naskenováno, jak dlouho operace trvala a různé další statistiky.



  1. Mongo DB vztahy mezi objekty

  2. Nodejs, nečeká na dokončení dotazu Redis, než bude pokračovat v provádění

  3. MongoDB ekvivalent SQL OR

  4. Získání hashe se symbolem jako klíče pro mongo v kolejích