【问题标题】:how are two values of different BSON types compared?如何比较不同 BSON 类型的两个值?
【发布时间】:2020-04-06 16:45:29
【问题描述】:

我正在阅读MongoDB BSON Comparison docs

但是我没看清楚。

在比较不同 BSON 类型的值时,MongoDB 使用以下比较顺序,从低到高:

  1. MinKey(内部类型)
  2. 数字(整数、长整数、双精度、小数)
  3. 符号、字符串
    ...

是否有任何隐式类型转换以及它是如何工作的?

你能举几个例子吗?

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    没有类型转换。

    当比较两个项目时:

    • 如果它们有不同的类型,则类型referenced 的顺序变为items的顺序。
    • 如果它们的类型相同,则比较各自的值,它们的顺序成为items的顺序。

    试试:

    > db.foo.insertMany([{a:1},{a:[]},{a:'1'},{a:{}},{a:true},{a:false},{a:/test/},{a:null},{a:[1]}])
    {
            "acknowledged" : true,
            "insertedIds" : [
                    ObjectId("5e8aeae7d11542e71728da71"),
                    ObjectId("5e8aeae7d11542e71728da72"),
                    ObjectId("5e8aeae7d11542e71728da73"),
                    ObjectId("5e8aeae7d11542e71728da74"),
                    ObjectId("5e8aeae7d11542e71728da75"),
                    ObjectId("5e8aeae7d11542e71728da76"),
                    ObjectId("5e8aeae7d11542e71728da77"),
                    ObjectId("5e8aeae7d11542e71728da78"),
                    ObjectId("5e8aeae7d11542e71728da79")
            ]
    }
    > db.foo.find().sort({a: 1})
    { "_id" : ObjectId("5e8aeae7d11542e71728da72"), "a" : [ ] }
    { "_id" : ObjectId("5e8aeae7d11542e71728da78"), "a" : null }
    { "_id" : ObjectId("5e8aeae7d11542e71728da71"), "a" : 1 }
    { "_id" : ObjectId("5e8aeae7d11542e71728da79"), "a" : [ 1 ] }
    { "_id" : ObjectId("5e8aeae7d11542e71728da73"), "a" : "1" }
    { "_id" : ObjectId("5e8aeae7d11542e71728da74"), "a" : {  } }
    { "_id" : ObjectId("5e8aeae7d11542e71728da76"), "a" : false }
    { "_id" : ObjectId("5e8aeae7d11542e71728da75"), "a" : true }
    { "_id" : ObjectId("5e8aeae7d11542e71728da77"), "a" : /test/ }
    > 
    

    空数组的行为似乎与文档不符。

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多