arrays - 嵌入式文档数组:字段和值之间的比较
问题描述
我正在接近 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 } ] }
可能吗?
解决方案
您应该像这样使用带有 $elemMatch 的问题 $projection:
db.collection.find({'ranges.first': {$lt: 29} ,'ranges.last': {$gt: 29} },{ ranges: { $elemMatch: {first: {$lt: 29} ,last: {$gt: 29} } }}).lean();
推荐阅读
- docker - 用于通信 2 个 docker 容器的 IP 地址是什么?
- json - 如何仅在从用户获取输入而不是在发送响应时忽略 POJO 值
- node.js - Node net.Socket.on("data") 事件是否有保证的顺序?
- selenium - 可以使用 href 属性获取 selenium 中的链接
- sockets - 监控与 localhost 的连接的 CPU 使用率低的方法
- android - 在 Firebase 存储中检索到错误的下载 URL
- node.js - 如何在 mongoose 查询 .find() 中调用 remove()?
- kubernetes - hazelcast kubernetes发现插件如何使用多个节点?
- ios - 无法将 UISearchController 的搜索栏添加到导航栏并且委托方法没有被调用
- spring-boot - 如何使用确认和返回回调为兔子模板编写集成测试