我在MongoDB中有这个数组:
我想迭代并对其进行查询:
> for(var i=0; i < AllegriTeams.length; i++) {a[i]=db.team.find({
_id:AllegriTeams[i].team_id}, {_id:0, official_name:1})}
数组a在循环结束时只包含前两个正式名称。我失去了最后一个官方名称。
答案 0 :(得分:0)
您的循环看起来是正确的,并且不清楚为什么您不会在数组a
中收到三个项目。
检查您的变量AllegriTeams
是否包含三个元素。
> AllegriTeams.length
3
我模仿了您的设置,我收到了您期望a
有三个元素的结果。这就是我的所作所为:
// 1. Log into mongo and use the "test" database, for example
> use test
// 2. Create data
> db.team.insert({"_id": "Juv.26", "official_name":"Juv.26.xxx”})
WriteResult({ "nInserted" : 1 })
> db.team.insert({"_id": "Mil.74", "official_name":"Mil.74.xxx”})
WriteResult({ "nInserted" : 1 })
> db.team.insert({"_id": "Cag.00", "official_name":"Cag.00.xxx”})
WriteResult({ "nInserted" : 1 })
// 3. Create the AllegriTeams variable
> var AllegriTeams = [ { "team_id":"Juv.26"}, {"team_id":"Mil.74"}, {"team_id":"Cag.00"}]
// 4. Create the "a" array
> var a = []
// 5. Run the for loop. Consider using "findOne" instead of "find".
> for (var i=0; i < AllegriTeams.length; i++) { a[i]=db.team.find({ _id:AllegriTeams[i].team_id}, {_id:0, official_name:1})}
{ "official_name" : "Cag.00.xxx" }
// 6. Get length of "a"
> a.length
3
另外,请注意 find()
函数将返回光标。因此,存储在a
数组中的值将是游标值。考虑使用findOne()
函数,因为它返回文档。
再次,检查你的AllegriTeam变量有三个数组元素。