Разница двух наборов, сгенерированных из разных коллекций в MongoDB - PullRequest
0 голосов
/ 03 июня 2019

Предположим, здесь две коллекции в 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.

...