0.1.0 • Published 12 years ago
humanquery v0.1.0
HumanQuery
Lucene-inspired string-based mongodb query language for humans (and ferrets). And implemention in Mongoose
Installation
$ npm install humanqueryWhy?
- Nicer UX for the odd search / log filtering
- Writing JSON queries is a PITA
Example
var mongoose = require('mongoose');
require('humanquery')( mongoose );Query
model.findOne().query('level:error OR type:upload', function(err, doc){
// More Code..
});
model.query('level:error OR type:upload').count(function(err, doc){
// More Code..
});Querying
Fields
Specify field names with optional values:
level:erroryields
{ level: 'error' }Booleans
Omit value to imply true:
failedyields
{ failed: true }Or specify a boolean-ish value (true, false, yes, no):
failed: noyields
{ failed: false }Operators
Currently supports AND / OR, which may be nested:
(level:error AND type:"upload failed") OR user.name.first:Tobiyields
{ '$or':
[ { '$and': [ { level: 'error' }, { type: 'upload failed' } ] },
{ 'user.name.first': 'Tobi' } ] }Regular Expressions
Regexps may be used with the // syntax:
level:info AND name:/^To/yields
{ '$and': [ { level: 'info' }, { name: /^To/ } ] }Patterns
Wildcards may be used to generate regular expressions:
level:error AND hostname:api-*yields
{ '$and': [ { level: 'error' }, { hostname: /^api-.*$/ } ] }License
MIT
0.1.0
12 years ago