Предположим, здесь две коллекции в MongoDB.
Первая коллекция Goods
включает в себя следующие документы
{
{_id: Object(), Id: "a", Type: "daily"},
{_id: Object(), Id: "a", IsSale: true, Price: 20},
{_id: Object(), Id: "b", Type: "monthly"},
{_id: Object(), Id: "c", Type: "daily"},
{_id: Object(), Id: "c", IsSale: true, Price: 30, Origin: "Canada"},
{_id: Object(), Id: "d", Type: "daily"}
}
Вторая коллекция Status
включает следующие документы
{
{_id: Object(), Id: "a", SoldOut: false}
{_id: Object(), Id: "a", SoldOut: true}
{_id: Object(), Id: "c", SoldOut: false}
}
Я хочу получить Id set
, в котором Type = "daily"
, статус IsSale = true
(эту информацию можно найти в коллекции Goods
), а товар Id
не был продан (эта информация может быть найдено в коллекции Status
).
В частности, из коллекции Goods
мы можем получить набор идентификаторов {"a", "c"}
, где Type = "daily"
и IsSale = true
. Из коллекции Status
мы можем получить набор идентификаторов {"a"}
, где товар распродан (в Status
есть документ SoldOut=true
). Таким образом, результатом является разность двух наборов {"a", "c"} - {"c"} = {"a"}
.
Я знаю, что в MongoDB такие разностные операции не распространены, но я все же пытаюсь выяснить проблему, а не решать их в служебной логике, поскольку это может помочь уменьшить время отклика.
Можете ли вы дать какие-либо предложения? THX.