gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:32:42 25 4
gpt4 key购买 nike

我正在尝试在 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 || []
};
})

以下是数据库

用户集合

{
"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"
}

我无法弄清楚如何在 node-mongodb-native 插件的帮助下在 NodeJS 中执行上述 MongoDB 查询。

我尝试了下面的代码,但后来我得到了 TypeError: undefined is not a function at .map

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

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

提前致谢

最佳答案

我为此苦苦挣扎了一段时间。我发现通过在 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 解决方案有效,但我真的希望 map 有效。

关于node.js - 如何在node.js中实现Mongodb游标的map功能(node-mondodb-native),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com