Pymongo выбрать значение для нескольких коллекций, где условия, и сгруппировать по дате - PullRequest
0 голосов
/ 23 февраля 2019

Я новичок в mongodb, и я работаю с использованием pymongo

Есть ли способ выбрать конкретное поле в нескольких коллекциях, где конкретная дата соответствует параметру запроса, и сгруппировать записи по дате?

Демонстрация:

У меня есть 2 коллекции A, B

A:

{
   "_id" : ObjectId("7d663451d1e7242c4b68ekjd"), 
   "date" : "Mon Dec 27 2010 18:51:00 GMT+0000 (UTC)", 
   "value" : 1, 
}
{
   "_id" : ObjectId("qd663451d1e7242c4b68e001"), 
   "date" : "Mon Dec 27 2010 18:52:00 GMT+0000 (UTC)", 
   "value" : 2, 
}
...
...

B:

{
   "_id" : ObjectId("td663451d1e7242c4b68eiu6"), 
   "date" : "Mon Dec 27 2010 18:51:00 GMT+0000 (UTC)", 
   "prediction_value" : 3, 
}
{
   "_id" : ObjectId("4d663451d1e7242c4b68e004"), 
   "date" : "Mon Dec 27 2010 18:52:00 GMT+0000 (UTC)", 
   "prediction_value" : 4, 
}
...
...

например:

ЕслиЯ ищу дата == пн 27 декабря 2010 18:52:00 GMT + 0000 (UTC)

Мне нужно получить A.value и B.prediction_value и групповые записи к этой дате

результат как:

"Mon Dec 27 2010 18:52:00 GMT+0000": [ 
 { 
   "A" : 2
 },
 {
   "B" : 4
 }
]

Я был бы очень признателен за пример, так как я новичок.Спасибо за ваше понимание.

1 Ответ

0 голосов
/ 23 февраля 2019

Вы можете выполнить два простых запроса по отдельности:

date = 'Mon Dec 27 2010 18:52:00 GMT+0000'
A_doc = db.A.find_one({'date': date})
B_doc = db.B.find_one({'date': date})
A_value = A_doc['value']
B_prediction_value = B_doc['prediction_value']
# manipulate the data as you want

Mongo не имеет полной поддержки запросов нескольких коллекций, только $ lookup для левого внешнего соединения.Но я думаю, что в большинстве случаев выполнение двух простых запросов предпочтительнее, чем одного.Проверьте эту ссылку для получения дополнительной информации:

Поиск по нескольким коллекциям в MongoDB

MongoDB запрашивает несколько коллекций одновременно

https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

...