Как найти по вложенному свойству в мангусте - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь найти объект в своей базе данных по вложенному свойству, я не могу найти какой-либо способ сделать это.Моя схема ниже, и я показал, как я пытался сделать запрос.

var stations = {
    Alpha: Number,
    Beta: Number
};
var systemSchema = new mongoose.Schema({
    name: String,
    location: String,
    nodes: {
        main: stations,
        secondary: stations,
        tertiary: stations
    }
});

var System = mongoose.model("System", systemSchema);

System.findOne({ nodes: { main: {Alpha: 23000}}}, function(err, system){
    if(err){console.log(err);}
    else{console.log(system);}
});

Каждый раз, когда я запускаю это, ничего не возвращается.Я ожидал, что в моей базе данных будет возвращен соответствующий объект.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Измените это

System.findOne({ nodes: { main: {Alpha: 23000}}}, function(err, system){
 if(err){console.log(err);}
  else{console.log(system);}
});

на

 System.findOne({ 'nodes.main.Alpha': 23000}, function(err, system){
   if(err){console.log(err);}
   else{console.log(system);}
 });

Это будет работать

0 голосов
/ 18 февраля 2019

Вы можете указать вложенность объекта в виде строки.

System.findOne({ "nodes.main.Alpha": 23000 }, function(err, system) {
  if (err) {
    console.log(err);
  } else {
    console.log(system);
  }
});

Это должно сработать, не могу проверить прямо сейчас, но я помню, что где-то использовал его.

Дайте мне знать, если это помогло ..

...