Python Pymongo-从两个数据库聚合
这里没有。我需要得到一份报告,该报告是来自两个数据库的两个集合的集合。我试图对这个问题绞尽脑汁,但失败了。我发现的示例是聚合来自同一数据库的两个集合 系列1 SweetsResults=client.ItemsDB.sweets 收集糖果:\标识、类型、颜色 收藏2 SearchesResults=client.LogsDB.searches 集合搜索:_id、时间戳、类型、颜色 我需要的报告将列出类型“candy”中的所有糖果,以及糖果集合中列出的所有颜色,对于每一行,搜索任何可用的“candy”+颜色组合的次数(计数) 任何帮助都将不胜感激Python Pymongo-从两个数据库聚合,python,mongodb,pymongo,aggregation,Python,Mongodb,Pymongo,Aggregation,这里没有。我需要得到一份报告,该报告是来自两个数据库的两个集合的集合。我试图对这个问题绞尽脑汁,但失败了。我发现的示例是聚合来自同一数据库的两个集合 系列1 SweetsResults=client.ItemsDB.sweets 收集糖果:\标识、类型、颜色 收藏2 SearchesResults=client.LogsDB.searches 集合搜索:_id、时间戳、类型、颜色 我需要的报告将列出类型“candy”中的所有糖果,以及糖果集合中列出的所有颜色,对于每一行,搜索任何可用的“cand
谢谢。您可以在mongo shell中使用以下脚本 获取每种类型的不同颜色,然后是每种类型和颜色组合的计数
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)
});
您可以在mongo shell中使用以下脚本 获取每种类型的不同颜色,然后是每种类型和颜色组合的计数
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)
});
与中完全相同,但使用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)
与中完全相同,但使用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)