在Node.js
应用中,我使用Mongodb
/ Mongoose
。 MongoDB
没有联盟,这对我来说是个大问题。因为我将数据存储在单独的集合中。我有两个系列。 Users
和Books
。我需要这样的查询:
SELECT Books.name FROM Users,Books WHERE Users.name='john' and Books.lang='en'
我确定我们不能通过一个Mongoose查询来执行此操作。 Mongoose populate也有很多问题。例如,如果我这样做:
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个用户项目然后填充书籍,如果没有人口,那么结果将为null。我需要获取属于特定用户的前6项并且有英文书。
使用此代码,将获取名为john的所有用户,其中一些用户拥有英语书籍。想象名为john的用户是100万,其中一个有英文书!我们必须获取那些巨大的数据并使用辅助代码块来过滤那一项。它不清楚和好的方式。
还有其他方法吗?我对此有很多搜索但没有好结果。在这种情况下,令我烦恼的是获取所有用户,然后再次过滤它。这可能是一个缓慢的架构。对我来说最好的方式是什么?我该怎么办。
我想知道声称是企业的数据库引擎有这个缺点。其他人没有这个问题?我有什么东西不见了?