首页 > 解决方案 > 嵌入式文档数组:字段和值之间的比较

问题描述

我正在接近 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 } ] }

可能吗?

标签: arraysmongodbmongodb-query

解决方案


您应该像这样使用带有 $elemMatch 的问题 $projection:

db.collection.find({'ranges.first': {$lt: 29}  ,'ranges.last': {$gt: 29} },{ ranges: { $elemMatch: {first: {$lt: 29}  ,last: {$gt: 29} } }}).lean();

推荐阅读