我是Meteor的新手,特别是在MongoDB中。
关于这个问题我已经搜索了很多,但没有发现与此有关。
因此,有一个应用程序包含两个集合:EventsCollection
和RacesCollection
并在Meteor服务器上运行。
RacesCollection
的记录数量如下:
RacesCollection.insert({raceId:"r1", eventId:"e1", raceName:"Moto race 1", status:"statusDetail", mode:"modeDetail"});
RacesCollection.insert({raceId:"r2", eventId:"e1", raceName:"Moto race 2", status:"statusDetail", mode:"modeDetail"});
这是包含eventId = e1
var race = RacesCollection.find({eventId: "e1"});
现在我要做的是只需访问race
的字段到javascript,例如race.raceId
,race.raceName
。怎么实现这个?是否有用于访问特定数据字段的getter方法?
如果它包含多行,如何遍历多行race
?
任何建议都会得到满足。
答案 0 :(得分:31)
使用ForEach:
db.databaseName.find(
{
field:"valueofField"
}
).forEach(function(obj){
print(obj.fieldname)
})
答案 1 :(得分:10)
MongoDB的find()
方法返回所谓的“游标”。在javascript中,您可以像these docs一样迭代光标,并使用标准的javascript属性访问来访问文档的字段。
例如(未经测试的代码,但这是主意):
var raceCursor = RacesCollection.find({eventId: "e1"});
var race;
while ( raceCursor.hasNext() ) {
race = raceCursor.next();
console.log( race.raceName );
}
由于Meteor是纯javascript,它还支持使用forEach()
迭代光标的文档,如this example中所示。
答案 2 :(得分:4)
我遇到了同样的问题,并且hasNext()对我没有用。
相反,Meteor提供fetch()将光标转换为javascript数组。所以你可以使用:
var raceCursor = RacesCollection.find({eventId: "e1"});
var races = raceCursor.fetch();
for (var i=0; i<races.length; i++) {
console.log( races[i].raceName );
}
答案 3 :(得分:4)
RacesCollection.find(
{eventId: "e1"}
).forEach(function(race){
console.log( race.raceName );
};