努布在这里。我需要从两个数据库获得一个、两个集合的聚合的报告,。我想把这个问题搞清楚,但失败了。我发现的示例用于从同一个数据库聚合两个集合。
集合1
SweetsResults = client.ItemsDB.sweets
收集糖果:_id,类型,颜色
Collection2
SearchesResults = client.LogsDB.searches
集合搜索:_id、时间戳、类型、颜色
我需要的报告将列出来自“糖果”类型的所有糖果,列出糖果集合中列出的所有颜色,并为每一行列出搜索“糖果”+颜色的任何可用组合的数量(计数)。
任何帮助都将不胜感激。
谢谢。
发布于 2018-01-16 20:41:12
您可以在mongo中使用下面的脚本。
获取每种类型的不同颜色,然后对每种类型和颜色组合进行计数。
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)
});发布于 2018-01-16 20:56:27
与@Veeram answer完全相同,但与python完全相同:
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)https://stackoverflow.com/questions/48288688
复制相似问题