У меня есть две существующие коллекции и вам нужно заполнить третью, основываясь на сравнении между двумя существующими. Две коллекции, которые должны быть сравнены имеет следующую схему:Сравнение документов между двумя коллекциями MongoDB
Settings collection
{
"Identifier":"ABC123",
"C":"1",
"U":"V",
"Low":116,
"High":124,
"ImportLogId":1
}
Data collection
{
"Identifier":"ABC123",
"C":"1",
"U":"V",
"Date":"11/6/2013 12AM",
"Value":128,
"ImportLogId": 1
}
Я новичок в MongoDB и NoSQL в целом, так что я имею трудное время схватывая, как это сделать. SQL будет выглядеть как этот
SELECT s.Identifier, r.ReadValue, r.U, r.C, r.Date
FROM Settings s
JOIN Reads r
ON s.Identifier = r.Identifier
AND s.C = r.C
AND s.U = r.U
WHERE (r.Value <= s.Low OR r.Value >= s.High)
В этом случае с помощью выборки данных, я хотел бы вернуть запись, так как значение из коллекции данных больше, чем высокое значение из коллекции настройки. Возможно ли это с помощью запросов Mongo или уменьшения карты, или это плохая структура коллекции (то есть, возможно, все это должно быть в одной коллекции)?
Еще несколько дополнительных примечаний: Коллекция настроек должна иметь только 1 запись на «Идентификатор». Сбор данных будет иметь много записей на «Идентификатор». Этот процесс потенциально может сканировать сотни тысяч документов за один раз, поэтому рассмотрение ресурсов несколько важно
Почему вы не используете команду diff? – myildirim
Это та вещь, на которой MongoDB действительно не предназначен. – WiredPrairie