我正在从mysql迁移到mongodb。昨天开始学习mongodb。
我有一个大的mysql表(超过400万行,每个字段超过300个),我将移到mongodb。
让我们假设,products表有以下字段-
_id、类别和300+其他字段。
为了在产品中找到中的前5大类以及它们的计数,我有下面的mysql查询
Select category, count(_id) as N from products group by category order by N DESC limit 5;
我在category字段上有一个索引,这个查询在mysql中大约占用4.4秒。
现在,我已经成功地将这个表移到
在听说了很多关于Mongodb性能的优点之后,我们决定给Mongodb一个解决问题的机会。我首先将几个mysql数据库中的所有记录移到mongodb中的一个集合中。这就产生了一个包含2 900万文档(每个文档至少有20个字段)的集合,这在HD中占用了大约100 GB的空间。我们决定将它们放在一个集合中,因为所有文档都具有相同的结构,我们希望查询和聚合所有这些文档的结果。
我创建了一些索引来匹配我的查询,否则即使是简单的count()也要花费很长时间。但是,distinct()和group()等查询仍然花费太长的时间。
示例:
// creation of a compound index
这个问题可能用词不当,但这是我的问题。我有一个MySQL查询,它可以查找哪个用户从库中检出的图书最多。SQL查询工作得很好,但我是MongoDB世界的新手。下面是我的SQL查询:
SELECT UID, count(UID)
FROM checkout_data
GROUP BY UID
ORDER BY count(UID) desc
LIMIT 1;
在蒙戈我该怎么做?编辑:示例库
{
"Date_Checked_Out":" 2014-01-01 09:34:36.206",
"Day":"Wednesday",
我是MongoDB的新手。我想进行与这个sql查询等价的mongoDB查询。
SELECT * FROM posts WHERE user_id IN
(SELECT follower_id FROM followers WHERE user_id = '@userid')
ORDERBY timestamp
此sql查询列出了所有按时间戳排序的关注用户的帖子。
如果有两个用户和帖子的集合,那么我如何在mongoDB中编写等价的查询,请帮助我。提前谢谢。
我尝试在$match (聚合)函数中使用$in运算符。由于某些原因,它不能在'_Id‘字段上工作,但是我找不到任何文档指出mongodb不支持它。
var ids = ['1', '2', '3', '4']; //an example. I am using real mongo object ids
// this is working fine
Product.find({_id : {$in : ids}})
.exec(function(err, res){
res.json(res);
});
我在Spring Boot应用程序中从Postgres切换到MongoDB。我很高兴能够通过@Query注释使用原生查询查询我的数据库:
@Query(value = "SELECT id\n" +
"FROM ( \n" +
"SELECT DISTINCT CASE sender WHEN 1 THEN recipient ELSE sender END AS friend_id \n" +
"FROM friendrequest WHERE 1 IN (recipient, sende