2015-08-15 3 views
4

В LokiJS я стараюсь очень простой запрос (который я предполагаю, это и):LokiJS: Простая находка запрос возвращает неправильный результат

var dbRes = recsCol.find({'format':format, 'cardId':-1}); 

после вставки некоторых данных с

recsCol.insert({format:format, cardId:id, recCardId:key, amount:item[key]}); 

, который не содержат cardId от -1.

Запрос по-прежнему дает результаты. Это ожидаемое поведение? Если да, то как я могу сделать поля точно такими, чтобы я не получил результат в этом случае?

ответ

6

Вы не можете сделать и в LokiJS, не проблема:

var dbRes = recsCol.find({'$and': [{'format':format}, {'cardId':-1}]}); 

Я рекомендую использовать поиск по разовым запросам. Если запрос возникает несколько раз на результирующих наборах, которые могут измениться, то определенно используйте представление.

+0

Это будет сделано то же самое. Каждое поле должно быть в своем собственном объекте запроса, чтобы оно было И. –

+0

@AlexKinnee вы правы, некоторый надзор за мной, видя, как я написал LokiJS! Я обновил ответ, спасибо. –

+1

@AlexKinnee Я также поддержал ваш ответ, поскольку он был действительно правильным, но мой был отмечен как правильный, поэтому я не хотел, чтобы люди дезинформировались. –

4

По умолчанию все поля в объекте запроса рассматриваются как OR. Для этого нужно изменить синтаксис запроса:

recsCol.find({ 
    $and: [ 
     {'format':format}, 
     {'cardId':-1} 
    ] 
});