如何在node.js中实现Mongodb游标的map函数(node-mondodb-native)

我正在尝试在NodeJS中实现以下MongoDB查询

db.tvseries.find({}).map(function(doc){ var userHasSubscribed = false; doc.followers && doc.followers.forEach(function(follower) { if(follower.$id == "abc") { userHasSubscribed = true; } }); var followers = doc.followers && doc.followers.map(function(follower) { var followerObj; db[follower.$ref].find({ "_id" : follower.$id }).map(function(userObj) { followerObj = userObj; }); return followerObj; }); return { "id": doc.name, "userHasSubscribed": userHasSubscribed, "followers": followers || [] }; }) 

以下是db

用户集合

 { "id": ObjectId("abc"), "name": "abc_name" }, { "id": ObjectId("def"), "name": "def_name" }, { "id": ObjectId("ijk"), "name": "ijk_name" } 

电视机集合

 { "id": ObjectId("123"), "name": "123_name", "followers": [ { "$ref": "users", "$id": ObjectId("abc"), }, { "$ref": "users", "$id": ObjectId("def"), } ] }, { "id": ObjectId("456"), "name": "456_name", "followers": [ { "$ref": "users", "$id": ObjectId("ijk"), }, ] }, { "id": ObjectId("789"), "name": "789_name" } 

我无法弄清楚如何在NodeJS中使用node-mongodb-native插件来执行上面的MongoDB查询。

我尝试了下面的代码,但后来我得到TypeError:undefined不是在.map 的函数

 var collection = db.collection('users'); collection.find({}).map(function(doc) { console.log(doc); }); 

如何在NodeJS中执行.map函数?

提前致谢

我知道我很晚了,但是我通过在Google上search同样的问题来到这里。 最后,我无法使用map函数来实现,但是使用forEach却有窍门。

一个使用ES6和StandardJS的例子。

  let ids = [] let PublicationId = ObjectID(id) feeds_collection .find({PublicationId}) .project({ _id: 1 }) .forEach((feed) => { ids.push(feed._id) }, () => done(ids)) 

我为此奋斗了一段时间。 我发现通过在map函数工作后添加.toArray()

你甚至可以跳过map ,只添加.toArray()来获取所有的文档字段。

  const accounts = await _db .collection('accounts') .find() .map(v => v._id) // leaving this out gets you all the fields .toArray(); console.log(accounts); // [{_id: xxx}, {_id: xxx} ...] 

请注意,为了使map工作,所使用的函数必须返回一些东西 – 你的例子只有console.log而不返回值。


forEach解决scheme的工作,但我真的想要map工作。