为了账号安全,请及时绑定邮箱和手机立即绑定

如何查询嵌套对象?

如何查询嵌套对象?

回首忆惘然 2019-06-21 17:47:23
如何查询嵌套对象?当使用嵌套对象表示法查询MongoDB时,我遇到了一个问题:db.messages.find( { headers : { From: "reservations@marriott.com" } } ). count()0db.messages.find( { 'headers.From': "reservations@marriott.com" }  ).count()5我看不出我做错了什么。我期望嵌套对象表示法返回与点表示法查询相同的结果。我哪里错了?
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

db.messages.find( { headers : { From: "reservations@marriott.com" } } )

此查询的文档headers 等号 { From: ... },即不包含其他字段。


db.messages.find( { 'headers.From': "reservations@marriott.com" }  )

这只会看到headers.From字段,不受包含在headers.


点符号文档


查看完整回答
反对 回复 2019-06-21
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

两种查询机制以不同的方式工作,如医生在部分子文件:

当字段保存嵌入的文档(即,子文件),您可以指定整个子文件字段的值,或“到达”子文件使用点表示法为子文件:

如果子文档与指定的子文档(包括字段顺序)完全匹配,则子文档中的相等匹配将选择文档。


在下面的示例中,查询匹配字段生成器的值是仅包含字段的子文档的所有文档。company有价值'ABC123'和田野address有价值'123 Street',按确切顺序:

db.inventory.find( {
    producer: {
        company: 'ABC123',
        address: '123 Street'
    }});


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 686 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信