Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongodb/Mongoose中从多个集合获取数据的单次查询_Javascript_Node.js_Mongodb_Mongoose_Nosql - Fatal编程技术网

Javascript Mongodb/Mongoose中从多个集合获取数据的单次查询

Javascript Mongodb/Mongoose中从多个集合获取数据的单次查询,javascript,node.js,mongodb,mongoose,nosql,Javascript,Node.js,Mongodb,Mongoose,Nosql,在Node.js应用程序中,我使用Mongodb/MongooseMongoDB没有连接,这对我来说是个大问题。因为我将数据存储在不同的集合中。我有两个收藏用户和书籍。我需要这样的查询: SELECT Books.name FROM Users,Books WHERE Users.name='john' and Books.lang='en' 我确信我们不能通过一个Mongoose查询来实现这一点。猫鼬也有很多问题。例如,如果我这样做: Users.find({user_name:'john'

Node.js
应用程序中,我使用
Mongodb
/
Mongoose
MongoDB
没有连接,这对我来说是个大问题。因为我将数据存储在不同的集合中。我有两个收藏<代码>用户和
书籍
。我需要这样的查询:

SELECT Books.name FROM Users,Books WHERE Users.name='john' and Books.lang='en'
我确信我们不能通过一个Mongoose查询来实现这一点。猫鼬也有很多问题。例如,如果我这样做:

Users.find({user_name:'john'}).pupulate({path:'books', match:{lang:'en'}})
如果我把这个代码改成这个,就会出现另一个问题:

Users.find({user_name:'john'}).pupulate({path:'books', match:{lang:'en'}}).limit(6)
它获取前6个用户项,然后填充书籍,若并没有填充,那个么结果将为空。我需要获取前6项,属于一个特定的用户,并有一本英文书

使用此代码,将获取所有名为john的用户,其中一些用户拥有一本英语书。想象一下,名为john的用户有100万,其中一人有一本英文书!我们必须获取巨大的数据,并使用第二个代码块过滤这一项。这不是一个清晰的好方法

还有别的办法吗?我对此进行了大量搜索,但没有得到好的结果。在这种情况下,让我恼火的是获取所有用户,然后再次对其进行过滤。这可能是一个缓慢的体系结构。对我最好的方式是什么?我能做什么


我想知道一个声称是企业级数据库引擎的数据库引擎有这样的缺点。其他人没有这个问题吗?我缺少了一些东西?

这是一个伪代码,我想要的是:获取属于某个特定用户的前6项,该用户有一本英文书。我需要一条清晰的道路。我知道单次查询无法做到这一点,我同意使用辅助代码进行过滤,但我不同意获取100万条记录并选择其中一条。我想它会变得很慢。你能给我举个例子吗?我不明白你的意思,而且根据你给我的文件,我的答案也没有找到解决方案,抱歉,有点晚了。我的评论是荒谬的,因为猫鼬使用的是第二份文件的ID。您需要在用户或代理上保存一些图书信息,或者“反转”关系,首先在图书上搜索,然后按用户过滤。请记住,“填充”是mongoose的一项功能,而不是mongodb的任何“原生”功能来创建实体之间的正式关系。这是一个伪代码,我想要的是:获取属于特定用户的前6项,该用户有一本英文书。我需要一条清晰的道路。我知道单次查询无法做到这一点,我同意使用辅助代码进行过滤,但我不同意获取100万条记录并选择其中一条。我想它会变得很慢。你能给我举个例子吗?我不明白你的意思,而且根据你给我的文件,我的答案也没有找到解决方案,抱歉,有点晚了。我的评论是荒谬的,因为猫鼬使用的是第二份文件的ID。您需要在用户或代理上保存一些图书信息,或者“反转”关系,首先在图书上搜索,然后按用户过滤。请记住,“填充”是mongoose特性,而不是mongodb的任何“本地”特性来创建实体之间的正式关系。