Mongodb Meteor:访问嵌套对象中的一个属性
我有一个MongoDB查询,它返回一个对象(文档)Mongodb Meteor:访问嵌套对象中的一个属性,mongodb,meteor,Mongodb,Meteor,我有一个MongoDB查询,它返回一个对象(文档) var myFavSports=Profile.findOne({userId:currentUser,'favsports.name':league})由于Minimongo尚不支持中的运算符,解决方法是对返回的数组使用方法来过滤元素: var query = { "userId": currentUser, "favsports.name": league }; var myFavSports = Profile.findOn
var myFavSports=Profile.findOne({userId:currentUser,'favsports.name':league})代码>由于Minimongo尚不支持中的运算符,解决方法是对返回的数组使用方法来过滤元素:
var query = { "userId": currentUser, "favsports.name": league };
var myFavSports = Profile.findOne(query).favsports
.filter(function(s) {
return s.name === league
})[0] ;
console.log(myFavSports); // logs { name: "GER Bund", selfrank: "3"}
console.log(myFavSports.name); // logs "GER Bund"
console.log(myFavSports.selfrank); // logs "3"
在mongo shell中,您可以在投影中使用操作符,因为这将自动限制查询结果中favsports
数组的内容,使其仅包含与查询文档匹配的第一个元素。因此,您可以按如下方式获得所需的对象:
var query = { "userId": currentUser, "favsports.name": league },
projection = { "_id": 0, "favsports.$": 1 },
myFavSports = db.profile.findOne(query, projection).favsports[0];
console.log(myFavSports); // logs { name: "GER Bund", selfrank: "3"}
console.log(myFavSports.name); // logs "GER Bund"
console.log(myFavSports.selfrank); // logs "3"
然后在favsports
上迭代以找到一个合适的名称。你是指内部模板还是模板助手?这听起来很有趣,但是得到一个错误:6debug.js:41模板帮助程序中的异常:MinimongoError:Minimongo在投影中还不支持$operator。@FloridaGard我已经更新了解决方案,以包含此约束的解决方法。很抱歉,仍然不行。另一个错误:模板帮助程序中的异常:错误:您可能无法观察到带有{fields:{u id:0}}的光标。很抱歉,我没有测试过这个,所以您可能想再试一次,这种情况下的投影不是很必要,因为您将筛选favsports
属性。@FloridaGard不用担心,很乐意帮助:)