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
		}
	]
}

  

原文地址:https://www.cnblogs.com/yangyuping/p/11655752.html

时间: 2024-11-05 15:17:29

mongodb 通过嵌入文档中的字段排序的相关文章

如何在ChemDraw文档中改变层次排序

ChemDraw层次排序命令是在同一个图层中相对于一个结构图形改变另一个图形结构方位的有效方法.此ChemDraw教程将主要为您讲解如何在ChemDraw文档中改变层次排序. 一.图层 ChemDraw文档的图层有三层,依次排序,从后到前的顺序是:导入的图片.ChemDraw结构图形.文字. 如上图所示,钟表是导入的图片在最后一层,轨道图是ChemDraw结构图形在中间层,文字WATCH AND ORBIT在最前层.但是ChemDraw层次排序是可以用Object菜单中的Bring to Fro

利用python处理文档中各字段出现的次数并排序

1 import string 2 path = 'waldnn' 3 with open(path,'r') as text: 4 words = [raw_word.strip(string.punctuation).lower() for raw_word in text.read().split()] 5 words_index = set(words) 6 counts_dict = {index:words.count(index) for index in words_index}

将图片嵌入到markdown文档中

转自KFXW的专栏 将图片嵌入Markdown文档中一直是一个比较麻烦的事情.通常的做法是将图片存入本地某个路径或者网络存储空间,使用URL链接的形式插入图片: ![image][url_to_image] 这样做一个明显的麻烦之处在于处理图片与Markdown文档的一致性上.如果我们要拷贝文档,或者图片遭到误删/云端链接失效,就会变得不便.最让我们省心的方法便是将图片直接放到文档内部. 一个将图片嵌入文档中的方法是使用base64编码.步骤比较简单: 1. 将图片或截图保存在本地: 2. 使用

01将图片嵌入到Markdown文档中

将图片内嵌入Markdown文档中 将图片嵌入Markdown文档中一直是一个比较麻烦的事情.通常的做法是将图片存入本地某个路径或者网络存储空间,使用URL链接的形式插入图片: ![image][url_to_image] 这样做一个明显的麻烦之处在于处理图片与Markdown文档的一致性上.如果我们要拷贝文档,或者图片遭到误删/云端链接失效,就会变得不便.最让我们省心的方法便是将图片直接放到文档内部. 一个将图片嵌入文档中的方法是使用base64编码.步骤比较简单: 将图片或截图保存在本地:

HTML文档中嵌入CSS的几种方法

HTML中嵌入CSS的方法有三种:嵌入式.内联式.引用式. 一.嵌入式 在HTML文档中使用style元素,定义CSS样式. 1 <head> 2 <style type="text/css"> 3 h1{color:red} 4 h2{color:blue} 5 </style> 6 </head> 二.内联式 在每个HTML的元素中都可以定义style属性,该属性只可以对本元素起作用.对于其它元素不起作用. 1 <p style

MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))

目录 一.前言 (一) 运行环境 二.前期准备工作 (一) 创建 MongoDBContext MongoDb操作上下文类 (二)创建测试类 (三) 创建测试代码 三.内嵌数组增加元素操作 (一) Update.Set()方法 替换内嵌数组(不推荐使用) (二)Update.Push()方法 直接将元素压入内嵌数组(推荐) (三) Update.PushEach()方法 将多个元素压入内嵌数组(推荐) 四.内嵌数组删除元素操作 (一) Update.Set()方法 替换内嵌数组(不推荐使用) (

MongoDB实战-面向文档的数据(找到最合适的数据建模方式)

前一段时间一直研究通过Ruby操作MongoDB数据库,在学习的过程中也分享了自己学习成长的过程,撰写了包含两篇入门操作文章和十二篇进阶文章.本篇文章开始,我们将进入MongoDB的实战操作流程,MongoDB这一非关系型数据库-是一个文档型数据库,存储的是面向文档的数据. 如何在MongoDB数据库中使用schema 设计数据库schema是在已知数据库系统特性.数据本质以及应用程序需求的情况下为数据集选择最佳表述的过程.传统的关系型数据库RDBMS中鼓励使用正规化的数据模型,从而确保数据的可

SpringMVC MongoDB之“基本文档查询(Query、BasicQuery)”

一.简介 spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我们介绍了对MongoDB的新增和删除, 今天我们要介绍Java代码实现对MongoDB实现查询操作. 我们回顾一下,我们在之前介绍了MongoDB的基本文档查询,MongoDB的查询语法: db.orders.find({{<field1>:<value1>,<field2>

Aspose.Words使用教程之在文档中找到并替换文本

Aspose.Words使用教程之在文档中找到并替换文本 Aspose.Words是一款先进的文档处理控件,在不使用Microsoft Words的情况下,它可以使用户在各个应用程序中执行各种文档处理任务,其中包括文档的生成.修改.渲染.打印,文档格式转换和邮件合并等文档处理.此外,Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument, PDF, XPS, EPUB和其他格式. 使用范围:在前的范围内替换查找或替换特定的字符串,因为它会返回替换的数量,所以它