Mongodb文档中字段是否有先后顺序之分?

Mongodb使用知识点记录 专栏收录该内容
24 篇文章 20 订阅

在这片文章中,简单谈谈关于Mongodb中字段先后顺序的问题。

Mongodb中的文档是一种Key:Value对组成的Json字符串,按理说,字段的先后顺序是不应该影响到查询操作的。

我们简单做个实验,往集合中插入一条记录:

db.testcollection.insert({"apple":2, "banana":3});

这时候,我们通过以下两种方式查询都是一样的:

第一种方式:

db.testcollection.find({"apple":2,"banana":3})

第二种方式:

db.testcollection.find({"banana":3,"apple":2})

通过上面两种方式查询都可以查询出来结果,都是同一条记录。那是否就可以说明,字段顺序是没有区别的呢?别着急,我们再看一个例子。

比方我们在集合中插入了下面一条记录:

db.testcollection.insert({"type":"fruit", "detail":{"apple":2, "banana":3}});

此时我们和上面一样,采用两种方式进行查询:

第一种方式:

db.testcollection.find({"detail":{"apple":2,"banana":3}})

第二种方式:

db.testcollection.find({"detail":{"banana":3,"apple":2}})

从两种查询方式的结果来看,其实结果是不一样的,第一种方式查询到了结果,但是第二种方式是没有查询到结果的。从这个实例来看,就可以告诉我们,当我们在查询具有嵌套文档的集合中,还是要稍微注意一点的,否则很有可能就会出现上面的情况。

我们如何避免出现上面这样因为书写顺序而导致的查询结果不一样的情况呢?有个办法,那就是在查询时不要使用json字符串进行查询,在这种具有嵌套文档的集合中,可以使用点符号进行操作,我们采用下面两种方式进行查询。

第一种方式:

db.testcollection.find({"detail.apple":2,"detail.banana":3})

第二种方式:

db.testcollection.find({"detail.banana":3,"detail.apple":2})

通过结果可以知道,这两种方式查询出来的结果是一样的,由此可见,不管是对于简单的查询,还是对于具有嵌套文档的查询,不在查询字符串中对字段值使用Json串书写格式,而是使用点号进行嵌套引用查询才是比较合适的做法,可以防止因书写字段顺序和文档中的字段顺序不一样导致的查询错误。



  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页

打赏

DreamMakers

您的肯定是我坚持的最大动力。

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值