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> ...
随机推荐
- contest14 CF160div2 oooxx oooxx ooooo
DE E : 排序条件不能加等于号, 不然会T
- BBS项目-01
目录 BBS项目 BBS开发流程: BBS表格创建: BBS项目 BBS开发流程: BBS项目: 开发流程: 需求分析 草拟一些项目的大致技术点和流程 架构设计 架构师(框架 语言 数据库 缓存数据库 ...
- vue 实现模块上移下移 实现排序
效果图 上移 下移 首先想到的是 数组的相互替换嘛 <template> <div> <div class="box" v-for="(it ...
- 作业:SSH
作业:使用SSH通过网络远程控制电脑 在虚拟机中用apt命令安装了ssh,但多次连接都失败了,尝试了很多次.后来发现只要是虚拟机中的系统使用的ip都是一样的从而发现了问题.虚拟机的网络是被更改后的,后 ...
- 《Modern PHP》读书笔记
这本书适合你吗? 我认为每个有一定PHP开发经验的人都应该读读这本书,因为正如书中的前言所说: “网上有成千上万的PHP教程,其中大多数都已经过时了,展示的是陈旧的实践方式.可是,谷歌的搜索结 ...
- 【Kubernetes学习之二】Kubernetes集群安装
环境 centos 7 Kubernetes有三种安装方式:yum.二进制.kubeadm,这里演示kubeadm. 一.准备工作1.软件版本 软件 版本 kubernetes v1.15.3 Cen ...
- apt-get命令使用
1.apt-get命令 apt-get命令是Debian Linux发行版中的APT软件包管理工具,所有基于Debian的发行都使用这个包管理系统. (1)命令语法 apt-get(选项)(参数) ( ...
- Java核心技术 卷一(序言+0-5)
l 常见简写: JDK(Java Development Kit):Java开发工具包 API:应用程序编程接口 OOP(Object-Oriented Programming):面向对象程序设计 l ...
- 线程互斥synchronized
/** * * 线程互斥,采用synchronized关键字可以实现线程与线程之间的互斥,要注意的是在synchronized上的对象要是同一个,才可以 * 保证在同一时刻,只有一个线程可以执行syn ...
- Excel导出,添加有效性
#region 添加有效性 DataTable dt = LAbll.LogisticsAccounts(DeptId); //查数据 if (dt.Rows.Count < 20) //有效 ...