mongodb 通过嵌入文档中的字段排序
mongodb中的全部数据:
db.testInfo.find({})
.sort({_id:-1})
.limit(100)
查询结果:
/* 1 createdAt:2019/10/11 下午5:12:50*/
{
"_id" : ObjectId("5da04792665cd81dc0d46d3d"),
"name" : "jim2",
"age" : 5,
"list" : [
{
"title" : "a2",
"price" : 1
},
{
"title" : "a1",
"price" : 5
}
]
}, /* 2 createdAt:2019/10/11 下午5:01:55*/
{
"_id" : ObjectId("5da04503665cd81dc0d46d3c"),
"name" : "leo",
"age" : 4,
"list" : [
{
"title" : "a1",
"price" : 3
},
{
"title" : "d2",
"price" : 2
}
]
}, /* 3 createdAt:2019/10/11 下午5:01:55*/
{
"_id" : ObjectId("5da04503665cd81dc0d46d3b"),
"name" : "jason",
"age" : 3,
"list" : [
{
"title" : "a1",
"price" : 2
},
{
"title" : "c2",
"price" : 1
}
]
}, /* 4 createdAt:2019/10/11 下午5:01:55*/
{
"_id" : ObjectId("5da04503665cd81dc0d46d3a"),
"name" : "mark",
"age" : 2,
"list" : [
{
"title" : "a1",
"price" : 3
},
{
"title" : "b2",
"price" : 4
}
]
}, /* 5 createdAt:2019/10/11 下午5:00:12*/
{
"_id" : ObjectId("5da0449c665cd81dc0d46d39"),
"name" : "jim",
"age" : 1,
"list" : [
{
"title" : "a1",
"price" : 1
},
{
"title" : "a2",
"price" : 2
}
]
}
通过嵌入文档中查询指定title的数据,然后根据price排序,注意需要排序时将查询的title也一并作为排序字段,否则顺序会错乱。
db.testInfo.find({"list.title":"a1"})
.sort({
"list.title":1,
"list.price":1
});
查询结果:
/* 1 createdAt:2019/10/11 下午5:00:12*/
{
"_id" : ObjectId("5da0449c665cd81dc0d46d39"),
"name" : "jim",
"age" : 1,
"list" : [
{
"title" : "a1",
"price" : 1
},
{
"title" : "a2",
"price" : 2
}
]
}, /* 2 createdAt:2019/10/11 下午5:01:55*/
{
"_id" : ObjectId("5da04503665cd81dc0d46d3b"),
"name" : "jason",
"age" : 3,
"list" : [
{
"title" : "a1",
"price" : 2
},
{
"title" : "c2",
"price" : 1
}
]
}, /* 3 createdAt:2019/10/11 下午5:01:55*/
{
"_id" : ObjectId("5da04503665cd81dc0d46d3a"),
"name" : "mark",
"age" : 2,
"list" : [
{
"title" : "a1",
"price" : 3
},
{
"title" : "b2",
"price" : 4
}
]
}, /* 4 createdAt:2019/10/11 下午5:01:55*/
{
"_id" : ObjectId("5da04503665cd81dc0d46d3c"),
"name" : "leo",
"age" : 4,
"list" : [
{
"title" : "a1",
"price" : 3
},
{
"title" : "d2",
"price" : 2
}
]
}, /* 5 createdAt:2019/10/11 下午5:12:50*/
{
"_id" : ObjectId("5da04792665cd81dc0d46d3d"),
"name" : "jim2",
"age" : 5,
"list" : [
{
"title" : "a2",
"price" : 1
},
{
"title" : "a1",
"price" : 5
}
]
}
目前好像根据经纬度范围查询时,无法同时指定嵌入文档中的字段正确排序。只能先通过经纬度范围查询出来所有数据后,再根据嵌入文档中字段进行排序。
特殊情况下是否可以考虑固定嵌入集合数量,指定下标来对应字段排序(未测试过)。
学艺不精,如有其他办法,欢迎留言一起讨论。
mongodb 通过嵌入文档中的字段排序的更多相关文章
- winform 替换word文档中的字段(包含图片添加),生成导出PDF文件(也可是word文件)
1.先打开你需要替换的word文档,在想要后续更换字段值的地方添加“书签”. 2.将模板文档存放在 程序的Debug文件下. 3.生成文件的按钮点击事件 代码: string templatePath ...
- 利用python处理文档中各字段出现的次数并排序
import string path = 'waldnn' with open(path,'r') as text: words = [raw_word.strip(string.punctuatio ...
- MongoDB(12)- 查询嵌入文档的数组
插入测试数据 db.inventory.insertMany( [ { item: "journal", instock: [ { warehouse: "A" ...
- 01将图片嵌入到Markdown文档中
将图片内嵌入Markdown文档中 将图片嵌入Markdown文档中一直是一个比较麻烦的事情.通常的做法是将图片存入本地某个路径或者网络存储空间,使用URL链接的形式插入图片: ![image][ur ...
- Mongodb:修改文档结构后出现错误:Element '***' does not match any field or property of class ***.
Mongodb:修改文档结构后出现错误:Element '***' does not match any field or property of class ***. Mongodb是一种面向文档的 ...
- shell之实战应用一(查找xml文档中的关键字段)
前几天同事问我一个问题,说如下的文档中,如何把name后面的字段(红色框中的字段)单独打印出来?
- MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
目录 一.前言 1. 运行环境 二.前期准备工作 1. 创建 MongoDBContext MongoDb操作上下文类 2.创建测试类 3.创建测试代码 三.内嵌数组增加元素操作 1.Update.S ...
- MongoDB 内嵌文档
MongoDB是文档型的数据库系统,doc是MongoDB的数据单位,每个doc相当于关系型数据库的数据行(row),doc和row的区别在于field的原子性:row中的column是不和分割的原子 ...
- MongoDB学习笔记——文档操作之查询
查询文档 使用db.COLLECTION_NAME.findOne()可以查询所有满足条件的第一条数据 预发格式如下: db.COLLECTION_NAME.findOne(<query> ...
随机推荐
- 浅谈BST(二叉查找树)
目录 BST的性质 BST的建立 BST的检索 BST的插入 BST求前驱/后继 BST的节点删除 复杂度 平衡树 BST的性质 树上每个节点上有个值,这个值叫关键码 每个节点的关键码大于其任意左侧子 ...
- 【题解】CF161B Discounts
目录 题目 思路 \(Code\) 题目 CF161B Discounts 思路 贪心.很显然对于一个板凳(价格为c)所能使我们最多少花费\(\frac{c}{2}\)的金钱. 原因如下: 如果你将一 ...
- ZROI 暑期高端峰会 A班 Day5 计算几何
内积(点积) 很普及组,不讲了. \[(a,b)^2\le(a,a)(b,b)\] 外积(叉积) 也很普及组,不讲了. 旋转 对于矩阵 \(\begin{bmatrix}\cos\theta\\\si ...
- JS中 (function(){...})()立即执行函数
(function(){...})() (function(){...}()) 这是两种js立即执行函数的常见写法. 基本概念: 函数声明:function fname(){...}; 使用funct ...
- RPA系列之(二)-UIPath学习目录
如何一步步渐入佳境,跟着目录一点一点来 UiPath简介 UiPath下载安装与激活 UiPath第一个案例Hello World UiPath变量的介绍和使用-1 UiPath变量的介绍和使用-2 ...
- ASP.NET Core消息队列RabbitMQ基础入门实战演练
一.课程介绍 人生苦短,我用.NET Core!消息队列RabbitMQ大家相比都不陌生,本次分享课程阿笨将给大家分享一下在一般项目中99%都会用到的消息队列MQ的一个实战业务运用场景.本次分享课程不 ...
- DDR3(4):读控制
写控制完成后开始设计读控制,写控制和读控制是非常相似的. 一.总线详解 由 User Guide 可知各信号之间的逻辑关系,读数据是在给出命令之后一段时间后开始出现的.图中没有给出app_rd_dat ...
- 重点|183道Java面试题可以说很详细了
<p style="text-align: right;"><span style="font-size: 14px;color: rgb(136, 1 ...
- 示例:WPF中自定义StoryBoarService在代码中封装StoryBoard、Animation用于简化动画编写
原文:示例:WPF中自定义StoryBoarService在代码中封装StoryBoard.Animation用于简化动画编写 一.目的:通过对StoryBoard和Animation的封装来简化动画 ...
- 比较器Comparable和Comparator
在java中要实现自定义类的比较,提供了以下两个接口: Comparable(内部排序) int compareTo(Object obj);返回值为int,默认升序排序 Comparator(外部排 ...