Sre*_*M B 1 mongodb node.js node-mongodb-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 || []
};
})
Run Code Online (Sandbox Code Playgroud)
以下是数据库
用户集合
{
"id": ObjectId("abc"),
"name": "abc_name"
},
{
"id": ObjectId("def"),
"name": "def_name"
},
{
"id": ObjectId("ijk"),
"name": "ijk_name"
}
Run Code Online (Sandbox Code Playgroud)
电视连续剧集
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何在node-mongodb-native插件的帮助下在NodeJS中执行上述MongoDB查询。
我尝试了以下代码,但随后出现TypeError:undefined不是 .map中的函数
var collection = db.collection('users');
collection.find({}).map(function(doc) {
console.log(doc);
});
Run Code Online (Sandbox Code Playgroud)
如何在NodeJS中执行.map函数?
提前致谢
我知道我已经很晚了,但我已经通过在 Google 上搜索相同的问题到达了这里。最后,我无法使用mapfunction 来做到这一点,但使用forEach却成功了。
使用 ES6 和 StandardJS 的示例。
let ids = []
let PublicationId = ObjectID(id)
feeds_collection
.find({PublicationId})
.project({ _id: 1 })
.forEach((feed) => {
ids.push(feed._id)
}, () => done(ids))
Run Code Online (Sandbox Code Playgroud)
我为此苦了一段时间。我发现通过.toArray()在map功能起作用后添加。
您甚至可以跳过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} ...]
Run Code Online (Sandbox Code Playgroud)
请注意,为了map正常工作,所使用的函数必须返回某些内容-您的示例仅console.log返回s而不返回值。
该forEach解决方案有效,但我真的很想map工作。
| 归档时间: |
|
| 查看次数: |
3491 次 |
| 最近记录: |