在JavaScript中访问MongoDB集合值

soh*_*ifa 14 javascript mongodb meteor

我是Meteor的新手,尤其是MongoDB.

关于这个问题,我已经搜索了很多,但没有发现与此有关.

所以有一个应用程序包含两个集合:EventsCollectionRacesCollection在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"});
Run Code Online (Sandbox Code Playgroud)

这是包含行的结果集合 eventId = e1

var race = RacesCollection.find({eventId: "e1"});
Run Code Online (Sandbox Code Playgroud)

现在我想做的是简单地访问racejavascript 的字段,比如race.raceId,race.raceName.怎么实现这个?是否有访问特定数据字段的getter方法?

race如果它包含多行,如何遍历多行?

任何建议都会得到满足.

Sek*_*kai 31

使用ForEach:

db.databaseName.find(
  {
    field:"valueofField"
  }
).forEach(function(obj){
    print(obj.fieldname)
})
Run Code Online (Sandbox Code Playgroud)

  • 这里最好的答案! (3认同)

she*_*man 10

MongoDB的find()方法返回所谓的"游标".在javascript中,您可以像在这些文档中一样迭代光标,并使用标准的javascript属性访问来访问文档的字段.

例如(未经测试的代码,但这是想法):

var raceCursor = RacesCollection.find({eventId: "e1"});
var race;
while ( raceCursor.hasNext() ) {
    race = raceCursor.next();
    console.log( race.raceName );
}
Run Code Online (Sandbox Code Playgroud)

由于Meteor是纯javascript,它还支持使用forEach()迭代光标的文档,如本例所示.

  • @shelman ..我已经尝试过你的代码,但它在Google Chrome中的JAVASCRIPT CONSOLE上显示以下错误:`未捕获TypeError:对象[object Object]没有方法'hasNext' (3认同)