我试图通过嵌套属性在数据库中找到一个对象,但似乎找不到任何方法。我的架构在下面,我已经展示了如何查询。
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);}
});
每次运行此命令,都不会返回任何内容。我期望我将在数据库中返回相应的对象。
答案 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);}
});
这将起作用