Если у меня есть эта схема...
person = {
emails : Array
}
Значения хранятся в массиве писем, как указано ниже:
emails : [{ a : "[email protected]" , b: "[email protected]" , c : "[email protected]" }]
Теперь я попробовал указанные ниже запросы,
Person.findOne({emails : "[email protected]"}).exec(function(err,person){
});
Собственный запрос MongoDB
Person.native(function(err,collection){
collection.find( emails : { "$in" : "[email protected]"} , function(err , result){
//code
});
});
ОТРЕДАКТИРОВАННЫЙ ВОПРОС
Теперь я попытался использовать ИЛИ, как показано ниже.
Person.findOne({
"or": [
{"emails.a": "[email protected]" },
{"emails.b": "[email protected]" },
{"emails.c": "[email protected]" }
]
}, function(err,doc) { });
На самом деле, я должен проверить, есть ли у «emails.a» «[email protected]», если не только, я должен найти, есть ли у «emails.b» или «emails.c» «[email protected]».
если «emails.a» имеет «[email protected]», то документ должен вернуть вывод. в противном случае поиск «[email protected]» продолжается в «emails.b» или «emails.c».
Как я могу это сделать?
Но я не получил требуемый результат, используя приведенный выше запрос. Пожалуйста помоги. Большое спасибо.
emails: ["[email protected]", "[email protected]", "[email protected]"]
, то то, что вы пытаетесь, сработало бы нормально. - person sgress454   schedule 29.03.2014