# Dopytuj databázu NoSQL

> Filtruj, zoraďuj, stránkuj a vyberaj polia dokumentov cez where, in, between, search, sort, take, skip a fields.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: sk
Content-SHA256: 31c80018a585bbf108cbcefc9ab3d4e3ef14d33154c0418e604bd4fc3981f302
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

`NOSQL('name').find()` vráti query builder. Reťaz podmienky a ukonči cez `.callback(function(err, response) {})`; `response` je pole dokumentov. Najužitočnejšie metódy:

- `.where('age', '>', 30)` porovná pole (operátor je predvolene `=`; použi `>`, `<`, `>=`, `<=`, `<>`)
- `.in('city', ['Bratislava', 'Prague'])` zhoduje ktorúkoľvek z hodnôt
- `.between('age', 20, 40)` zhoduje rozsah
- `.search('name', 'ann')` hľadá slová v textovom poli
- `.sort('age_desc')` zoradí podľa poľa (`_asc` alebo `_desc`)
- `.take(10)` a `.skip(20)` stránkujú výsledky
- `.fields('name,age')` vráti len tieto polia
- `.first()` vráti jeden dokument namiesto poľa

```js controllers/people.js
exports.install = function() {
	ROUTE('POST /seed/', seed);
	ROUTE('GET /older/', older);
	ROUTE('GET /cities/', cities);
	ROUTE('GET /range/', range);
	ROUTE('GET /search/', search);
	ROUTE('GET /page/', page);
	ROUTE('GET /names/', names);
	ROUTE('GET /youngest/', youngest);
};

function seed($) {
	var people = [
		{ id: '1', name: 'Anna Novak', age: 25, city: 'Bratislava' },
		{ id: '2', name: 'Boris Kral', age: 35, city: 'Prague' },
		{ id: '3', name: 'Cyril Dvorak', age: 45, city: 'Vienna' },
		{ id: '4', name: 'Diana Hall', age: 30, city: 'Bratislava' }
	];
	people.wait(function(item, next) {
		NOSQL('people').insert(item).callback(next);
	}, () => $.json({ count: people.length }));
}

function older($) {
	NOSQL('people').find().where('age', '>', 30).sort('age_desc').callback((err, response) => $.json(response));
}

function cities($) {
	NOSQL('people').find().in('city', ['Prague', 'Vienna']).sort('name_asc').callback((err, response) => $.json(response));
}

function range($) {
	NOSQL('people').find().between('age', 26, 40).sort('age_asc').callback((err, response) => $.json(response));
}

function search($) {
	NOSQL('people').find().search('name', 'hall').callback((err, response) => $.json(response));
}

function page($) {
	NOSQL('people').find().sort('age_asc').take(2).skip(2).callback((err, response) => $.json(response));
}

function names($) {
	NOSQL('people').find().fields('name').sort('name_asc').take(2).callback((err, response) => $.json(response));
}

function youngest($) {
	NOSQL('people').find().sort('age_asc').first().callback((err, response) => $.json(response));
}
```
