mongodb基础知识-内嵌文档相关

    在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"
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值