sql >> データベース >  >> NoSQL >> MongoDB

mongodbの$type番号で検索

    1つの数値タイプ のみがあります JavaScriptの場合(Number )、IEEE 754浮動小数点数(double)として2進数で表されます。

    BSON仕様 これはdouble(タイプ1)として表されるため、次のように見つけることができます:

    db.people.find({name: { $type: 1 }})
    

    いくつかのmongoがあります 別のBSONデータ型 を挿入する場合のシェルヘルパー :

    42              // Type 1:  double (64-bit IEEE 754 floating point, 8 bytes)
    NumberInt(42)   // Type 16: int32  (32-bit signed integer, 4 bytes)
    NumberLong(42)  // Type 18: int64  (64-bit signed integer, 8 bytes)
    

    たとえば:

    db.people.insert({ name: 'default', num: 42 })
    db.people.insert({ name: 'NumberLong', num: NumberLong(42) })
    db.people.insert({ name: 'NumberInt', num: NumberInt(42) })
    

    find()を実行した場合でも、さまざまな数値表現は一致します 複数の形式で表現できる数値(つまり、32ビット整数はdoubleまたはint64として表現することもできます)。

    例:

    db.people.find({num:42})
    {
        "_id" : ObjectId("50965aa3038d8c8e85fd3f45"),
        "name" : "default",
        "num" : 42
    }
    {
        "_id" : ObjectId("50965aa3038d8c8e85fd3f46"),
        "name" : "NumberLong",
        "num" : NumberLong(42)
    }
    {
        "_id" : ObjectId("50965aa3038d8c8e85fd3f47"),
        "name" : "NumberInt",
        "num" : 42
    }
    

    ただし、$typeで見つけた場合 、BSON表現が異なります:

    > db.people.find({num: { $type: 1 }})
    {
        "_id" : ObjectId("50965aa3038d8c8e85fd3f45"),
        "name" : "default",
        "num" : 42
    }
    
    > db.people.find({num: { $type: 16 }})
    {
        "_id" : ObjectId("50965aa3038d8c8e85fd3f47"),
        "name" : "NumberInt",
        "num" : 42
    }
    
    > db.people.find({num: { $type: 18 }})
    {
        "_id" : ObjectId("50965aa3038d8c8e85fd3f46"),
        "name" : "NumberLong",
        "num" : NumberLong(42)
    }
    


    1. DAOと依存性注入、アドバイス?

    2. マングースエラー:__vと__vを同時に更新することはできません

    3. MongoError:ドキュメントの検証に失敗しました-floatとintの両方を同じフィールドに挿入する方法-これはdoubleとしてマークされていますか?

    4. MongoDBインスタンス4.2にアクセスする方法は?