Convert a mongo query like object to lucene query string
npm i lucene-querystring
var lucene-querystring = require('lucene-querystring');
lucene-querystring.build({
name: 'leo'
});
> name:leo
-
fiter with default
andoperatorvar test = { name: 'leo', status: 'A' }; var q = luceneQueryString.build(test); assert.equal(q, 'name:leo AND status:A'); -
inquery item in a arrayvar test = { id: [1,2,3] }; var q = luceneQueryString.build(test); assert.equal(q, 'id:(1 OR 2 OR 3)');OR
var test = { id: { $or: [1,2,3] } }; var q = luceneQueryString.build(test); assert.equal(q, 'id:(1 OR 2 OR 3)'); -
'range' query like from end
var test = { id: { $gt: 100, $lt: 1000 } }; var q = luceneQueryString.build(test); assert.equal(q, 'id:[ 100 TO 1000 ]'); -
orqueryvar test = { $or: [{ id: 100 },{ id: 10 }] }; var q = luceneQueryString.build(test); assert.equal(q, 'id:100 OR id:10'); -
nullornot nullvar test = { name: { "$null": false }, }; var q = luceneQueryString.build(test); assert.equal(q, 'name:[* TO *]');
-
complex
orqueryvar test = { $or: [{ $and:[{ id:1 },{ num:1 }] },{ $and:[{ id:2 },{ num:2 }] }] }; var q = luceneQueryString.build(test); assert.equal(q, '(id:1 AND num:1) OR (id:2 AND num:2)'); -
complex
andqueryvar test = { $and: [{ $or: [{ id:1 },{ id:2 }] },{ $or: [{ num:1 },{ num:2 }] }] }; var q = luceneQueryString.build(test); assert.equal(q, '(id:1 OR id:2) AND (num:1 OR num:2)');
for other query please checkout and find in the test case.
npm test will run all test case in test folder