首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pymongo -从两个数据库聚合

Pymongo -从两个数据库聚合
EN

Stack Overflow用户
提问于 2018-01-16 19:42:54
回答 2查看 639关注 0票数 0

努布在这里。我需要从两个数据库获得一个、两个集合的聚合的报告,。我想把这个问题搞清楚,但失败了。我发现的示例用于从同一个数据库聚合两个集合。

集合1

SweetsResults = client.ItemsDB.sweets

收集糖果:_id,类型,颜色

Collection2

SearchesResults = client.LogsDB.searches

集合搜索:_id、时间戳、类型、颜色

我需要的报告将列出来自“糖果”类型的所有糖果,列出糖果集合中列出的所有颜色,并为每一行列出搜索“糖果”+颜色的任何可用组合的数量(计数)。

任何帮助都将不胜感激。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-01-16 20:41:12

您可以在mongo中使用下面的脚本。

获取每种类型的不同颜色,然后对每种类型和颜色组合进行计数。

代码语言:javascript
复制
var itemsdb = db.getSiblingDB('ItemsDB');
var logsdb = db.getSiblingDB('LogsDB');

var docs = [];
itemsdb.getCollection("sweets").aggregate([
    {$match:{"type":"candy"}},
    {$group: {_id:{type:"$type", color:"$color"}},
    {$project: {_id:0, type:"$_id.type", color:"$_id.color"}}
]).forEach(function(doc){ 
    doc.count = logsdb.getCollection("searches").count({ "type":"candy","color":doc.color});
    docs.push(doc)
});
票数 1
EN

Stack Overflow用户

发布于 2018-01-16 20:56:27

@Veeram answer完全相同,但与python完全相同:

代码语言:javascript
复制
uri = 'mongodb://localhost'
client = MongoClient(uri)
items_db = client.get_database('ItemsDB')
logs_db = client.get_database('LogsDB')

docs = []
aggr = items_db.get_collection('sweets').aggregate([
    {'$match': {"type": "candy"}},
    {'$group': {'_id': {'type': "$type", 'color': "$color"}}},
    {'$project': {'_id': 0, 'type': "$_id.type", 'color': "$_id.color"}},
])
for doc in aggr:
    doc['count'] = logs_db.get_collection("searches").count({"type": "candy", "color": doc['color']})
    docs.append(doc)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48288688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档