mongodb 合并集合_合并MongoDB集合

mongodb 合并集合

最近,我一直在使用几个月前创建的数据库。 对于该特定项目,我为每组项目创建了一个单独的数据库集合。 当时,我有一些按主题分类的书籍和文章,出于某种原因,我将所有书籍和文章根据主题分别放在不同的集合中。 然后,我为每个主题创建了端点。 这样,我可以为用户搜索的主题切换出url集合,如下所示:

在这种情况下,用户搜索“如何穿裤子”。 但是有了一个主题为“如何穿裤子”的合集,我现在可以仅获取这4个结果,而无需获取整个库。 我用来完成这项工作的另一个组件是单词映射对象。 我不会在这里介绍,但是如果您有兴趣,可以在这里查看: https : //hackernoon.com/creating-more-accurate-search-results-for-small-sites-436e64da79b6

尽管这很好用,但我最近希望能够一次搜索所有集合,而要拥有这么多单独的集合并不容易。 基本上,我想将所有集合合并为一个集合。

我首先进行提取,列出数据库中的所有集合。 我正在使用mlab,如果您正在使用mlab,则执行此操作的方法如下:

To get the collections in the specified database:
GET /databases/{database}/collections

Example:
https://api.mlab.com/api/1/databases/my-db/collections?apiKey=myAPIKey

因此,您的实现代码将如下所示:

https://api.mlab.com/api/1/databases/my-db/collections?apiKey=myAPIKey

如果此时console.log您的api,您将有一个数组,每个集合名称都是字符串。 完善。 现在,我将进行一个for循环,并遍历这些集合名称,并基本上执行与顶部相同的操作,在每次循环迭代中进行访存,并将访存集合名称替换为当前的api数组项。

https://api.mlab.com/api/1/databases/my-db/collections/api[i]?apiKey=myAPIKey

在这里,我们在获取URL(my-db)中拥有数据库名称,并且在每个循环中,集合名称都会更改(api [i])。 我们在那里获取数据,并将数据保存为“ test”。 然后,我们有一个嵌套循环,在其中循环测试,并将每个数组项推入名为“ arr”的数组。

现在,如果我们console.log“ arr”,我们应该在一个位置而不是多个集合中包含每个集合的合并数组。

接下来,我们需要将所有数据重新格式化为一个新的JSON对象数组。

setTimeout(function(){
for (var i = 0; i < arr.length; i++) {
let text = arr[i].article_text;
let text2 = text.replace(/"/g, "");
let text3 = text2.replace(/'/g, "");
arr[i] = `
<p>{"articleAuthor": "${arr[i].article_author}",
"articleAuthorTitle": "${arr[i].article_author_title}",
"articleName": "${arr[i].article_name}",
"articleDate": "${arr[i].article_date}",
"articleText": "${text3}"}</p>
`;
document.getElementById('verseText').innerHTML += arr[i];
}
}, 50000);

我在这里使用了set timeout函数,以允许完成上一步中的所有提取。 否则,我可能会在提取完成之前开始构建JSON数据。 我遍历数组“ arr”中包含的数据,并将其用大括号内的key:value对拍成一段,然后在DOM中呈现每个对象。 然后,我只是将输出复制并粘贴到json文件中。 只要没有错误,那我应该很好。 此时使用mlabs,我可以保存文件,然后使用命令行提示符将其导出到mlabs集合:

mongoexport -h ds#####.mlab.com:#### -d <database name> -c <collection name> -u <user> -p <password> -o filename.json

我们完成了。 现在,我可以从一个单独的数据库访问我的所有数据,但是我没有使用单独的集合来更改原始结构,以防万一我以后仍想使用该格式。

现在,在您发表评论并说出这种方法的愚蠢之处之前,请不要担心,我知道。 但是,如果您像我一样,并且对前端更加满意,这是一种实现此目的的方法。 我并不是说这是最好的,但它是一种方法,而且有效。

翻译自: https://hackernoon.com/combining-mongodb-collections-928f187333b5

mongodb 合并集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值