sql >> Database >  >> NoSQL >> MongoDB

zoeken op $type nummer in mongodb

Er is slechts één numeriek type in JavaScript (Number ), die in binair getal wordt weergegeven als een IEEE 754 floating point-getal (dubbel).

In de BSON-specificatie dit wordt weergegeven als een dubbel (type 1), dus je zou moeten kunnen vinden met:

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

Er zijn enkele mongo shell-helpers als u verschillende BSON gegevenstypen wilt invoegen :

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)

Dus bijvoorbeeld:

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

De verschillende numerieke representaties zullen nog steeds overeenkomen als u een find() . doet op een getal dat in meerdere formaten kan worden weergegeven (d.w.z. een 32-bits geheel getal kan ook worden weergegeven als een double of int64).

Bijvoorbeeld:

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
}

Als u echter vindt op $type , de BSON-weergave is anders:

> 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. Pymongo:herhaal alle documenten in de collectie

  2. mongodb:een hiërarchische boomstructuur opslaan?

  3. Documenten met tags in lijst ophalen, gerangschikt op totaal aantal overeenkomsten

  4. MongoDB-indexen op subdocumenten die niet worden gebruikt op basis van de syntaxis van de query