mongodb基础知识-内嵌文档相关
程序员文章站
2022-03-20 17:30:02
...
在mongodb中字段的值,可以是基本数据类型,也可是是文档类型。这样的话,如果要在内嵌文档中查询,可能需要对内嵌文档的字段建立索引。下面列出一些内嵌文档上的常用操作。
1. 内嵌文档单个字段建立索引
// 假设单个文档结构如下 { "_id": ObjectId("570c04a4ad233577f97dc459"), "score": 1034, "location": { state: "NY", city: "New York" } } // 对location的state字段建立索引 db.records.createIndex( { "location.state": 1 } ) // 这两个查询都可以用到state的索引 db.records.find( { "location.state": "CA" } ) db.records.find( { "location.city": "Albany", "location.state": "NY" } )
2. 内嵌文档精确匹配查询 基本的语法就是:fieldName: {field1: <value>,...},这种查询的返回的结果满足:内嵌文档只包含查询的字段、内嵌文档字段相应的值完全匹配、内嵌文档字段的顺序和查询中字段的顺序一致。
// 查询语句 db.bios.find( { name: { first: "Yukihiro", last: "Matsumoto" } } ) // 下面这两种不会被匹配到 一种是字段个数不一致 一种是字段顺序不一致 { first: "Yukihiro", aka: "Matz", last: "Matsumoto" } { last: "Matsumoto", first: "Yukihiro" }
3. 内嵌文档部分字段查询 上面的精确匹配太过严格,这样就要用到部分字段查询, 也就是只要查询的字段和值都匹配就返回,不管查询字段的顺序和内嵌文档的字段个数。
// 内嵌文档部分字段查询 db.bios.find( { "name.first": "Yukihiro", "name.last": "Matsumoto" } ) // 下面这两种结构也可以被查询出来 { first: "Yukihiro", aka: "Matz", last: "Matsumoto" } { last: "Matsumoto", first: "Yukihiro" }
推荐阅读
-
MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
-
mongodb 数据类型(null/字符串/数字/日期/内嵌文档/数组等)
-
MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
-
MongoDB对数组元素及内嵌文档进行增删改查操作
-
mongodb查询内嵌文档
-
mongodb查询内嵌文档
-
mongodb 数据类型(null/字符串/数字/日期/内嵌文档/数组等)
-
mongodb基础知识-内嵌数组相关
-
mongodb基础知识-内嵌文档相关
-
mongodb基础知识-内嵌文档相关