по теме: mongodb/meteor collection check if subdocument field exists when field is a variableMongoDB/метеор коллекция запросов с JavaScript Object
Я пытаюсь запросить коллекцию Метеор путем создания объекта с некоторыми именами переменных полей. Это работает, когда объект имеет одно поле, например
var query = {};
query['myField.'+myVariable] = {$exists: true};
Collection.find(query); //works fine
Но мне нужно запросить несколько селекторов. Например, мне нужно проверить, существует ли имя поля с переменной, а также проверить, есть ли другое поле = true, а также какое-то другое поле = переменная. Поэтому я пытаюсь найти общий способ создания объектов запроса. Я пробовал следующее:
var query = {};
query['myField.'+myVariable] = {$exists: true};
query[newField] = false;
Collection.find(query);
Это не работает. Я не уверен, что это потому, что «newField» не имеет типа Object или что-то еще.
Я пробовал также с помощью $ и селектор, чтобы увидеть, если это работает, но я не думаю, что синтаксис я использую точно правильно ...
var query = {};
var object = {};
object['myField'.+myVariable] = {$exists: true};
query['$and'] = [object, {newField: false}];
Collection.find(query);
Это также не работает , Я пытался построить с помощью mongo $ и селектора, который работает с использованием массива.
Как я могу синтаксически строить запрос коллекции Метеор с нотацией объектов JavaScript и объектными литералами? Я чувствую, что любой из них должен работать.
Чтобы быть конкретными, я ищу следующий (пол псевдокод после получения поддокумента/субобъекта с точечной нотацией не работает с запросом Монго)
Collection.find({correlated: false, readBy.(Meteor.userId()): {$exists: true} ...)
Я также думал, что это должно работать:
var query = {};
query['myField.'+myVariable] = {$exists: true};
Collection.find(query, {otherField: false})
//OR
var query2 = {};
query['priority'] = false;
Collection.find(query, query2)
Но ни один из них не делает.
EDIT: пример документа. Я хочу, чтобы найти документ таким образом, что текущий идентификатор пользователя НЕ readBy области и коррелируют: ложные
{
"_id" : ObjectId("55b6868906ce5d7b1ac6af10"),
"title" : "test",
"correlated" : "false",
"readBy" : {
"DXqLhesDEJq4ye8Dy" : ISODate("2015-07-27T18:29:43.592Z")
}
}
Псевдокод - самая важная строка всего этого вопроса. Можете ли вы убедиться, что он охватывает все, что вы хотите, из запроса? То есть не оставляйте ничего. –
Важно знать, что запросы манго - это только объекты JavaScript, поэтому нотация не имеет значения. Объект запроса во втором блоке кода выглядит корректно для меня, я просто предполагаю, что ваш запрос не находит ничего, а не работает. – azium
И что вы подразумеваете под * Это не работает? * Какова структура ваших документов? – styvane