sql >> Database teknologi >  >> NoSQL >> MongoDB

find efter $typenummer i mongodb

Der er kun én numerisk type i JavaScript (Number ), som er repræsenteret i binært som et IEEE 754 flydende kommatal (dobbelt).

I BSON-specifikationen dette vil blive repræsenteret som en dobbelt (type 1), så du burde kunne finde med:

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

Der er nogle mongo shell-hjælpere, hvis du vil indsætte forskellige BSON datatyper :

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)

Så for eksempel:

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

De forskellige numeriske repræsentationer vil stadig matche, hvis du laver en find() på et tal, der kan repræsenteres i flere formater (dvs. et 32-bit heltal kan også repræsenteres som et dobbelt eller int64).

For eksempel:

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
}

Men hvis du finder ved $type , BSON-repræsentationen er anderledes:

> 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. MongoDB - Få den seneste ikke-nul feltværdi fra dokumenter med tidsstempel

  2. Hvordan udfører jeg en forespørgsel i Mongoose?

  3. $geoNear (samlet pipeline) returnerer ikke korrekte dokumenter

  4. Emoji ikke gemt korrekt i mongodb