Массив встроенных документов: сравнение между полями и значением - PullRequest
0 голосов
/ 27 июня 2019

Я обращаюсь к MongoDB, и у меня есть база данных с такой структурой:

{ "_id" : 14185, "ranges" : [ { "first" : 17, "last" : 19 }, { "first" : 6, "last" : 9 } ] }
{ "_id" : 16478, "ranges" : [ { "first" : 26, "last" : 30 }, { "first" : 3, "last" : 5 } , { "first" : 3, "last" : 5 } ] }
{ "_id" : 17896, "ranges" : [ { "first" : 124, "last" : 130 }, { "first" : 140, "last" : 146 } ] }

Итак, у меня всегда есть массив "ranges", содержащий много документов: каждый из них имеет "first" и "last" значение.

Учитывая значение, такое как 29, я хотел бы написать запрос, который дает мне что-то вроде

{ "_id" : 16478, "ranges" : [ { "first" : 26, "last" : 30 } ] }

Возможно ли это?

1 Ответ

0 голосов
/ 27 июня 2019

Вы должны использовать вопрос $ projection с $ elemMatch следующим образом:

db.collection.find({'ranges.first': {$lt: 29}  ,'ranges.last': {$gt: 29} },{ ranges: { $elemMatch: {first: {$lt: 29}  ,last: {$gt: 29} } }}).lean();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...