如何在猫鼬中按嵌套属性查找

时间:2019-02-18 17:43:44

标签: javascript mongoose mongoose-schema

我试图通过嵌套属性在数据库中找到一个对象,但似乎找不到任何方法。我的架构在下面,我已经展示了如何查询。

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 :(得分:0)

您可以以字符串形式指定对象嵌套。

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

这应该可以,目前无法验证,但我记得我在某处以这种方式使用它。

让我知道是否有帮助。

答案 1 :(得分:0)

更改此

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);}
 });

这将起作用