如何通过猫鼬中的嵌套属性查找

Posted

技术标签:

【中文标题】如何通过猫鼬中的嵌套属性查找【英文标题】:How to find by nested property in mongoose 【发布时间】:2019-07-12 03:47:14 【问题描述】:

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

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);
    elseconsole.log(system);
);

每次我运行这个,什么都没有返回。我期望我的数据库中会返回相应的对象。

【问题讨论】:

【参考方案1】:

改变这个

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

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

这会起作用

【讨论】:

【参考方案2】:

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

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

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

如果有帮助请告诉我..

【讨论】:

以上是关于如何通过猫鼬中的嵌套属性查找的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在猫鼬中使用聚合填充嵌套在对象数组中的字段?

在猫鼬中,如何根据相关集合中的值查找记录?

更新猫鼬中的嵌套模式[重复]

在后钩中间填充猫鼬中的“查找”

如何更新猫鼬中的特定字段?

如何通过填充字段在猫鼬中查找文档?