MongoDB $typeOpérateur
Dans MongoDB,$typel'opérateur est utilisé pour interroger les documents dont les champs ont un type spécifié.
L'opérateur $type de MongoDB est utilisé pour interroger le type de données BSON des champs.
Il permet de spécifier un ou plusieurs types et renvoie les documents correspondant à ces types.
Voici une introduction détaillée et des exemples de l'opérateur $type.Syntaxe :
db.collection.find({ field: { $type: <type> } })
- field: le champ dont le type doit être vérifié.
- type: le type BSON spécifié, qui peut être un code numérique du type ou une chaîne du nom du type.
Types BSON
Voici les types BSON courants et leurs codes numériques et noms de chaîne correspondants :
| Code de type | Nom de type |
|---|---|
| 1 | double |
| 2 | string |
| 3 | objet |
| 4 | array |
| 5 | binData |
| 6 | undefined |
| 7 | objectId |
| 8 | bool |
| 9 | date |
| 10 | null |
| 11 | regex |
| 12 | dbPointer |
| 13 | javascript |
| 14 | symbole |
| 15 | javascriptWithScope |
| 16 | int |
| 17 | timestamp |
| 18 | long |
| 19 | decimal |
| 255 | minKey |
| 127 | maxKey |
Exemple
Trouver les documents dont le type de champ est une chaîne de caractères :
db.myCollection.find({ fieldName: { $type: "string" } })
Ou utiliser le code de type :
db.myCollection.find({ fieldName: { $type: 2 } })
Trouver les documents dont le type de champ est un nombre, par exemple, trouver les documents où le type du champ age est un entier :
db.myCollection.find({ age: { $type: "int" } })
Ou utiliser le code de type :
db.myCollection.find({ age: { $type: 16 } })
Trouver les documents dont le type de champ est un booléen :
db.myCollection.find({ isActive: { $type: "bool" } })
Ou utiliser le code de type :
db.myCollection.find({ isActive: { $type: 8 } })
Trouver les documents dont le type de champ est une date :
db.myCollection.find({ createdAt: { $type: "date" } })
Ou utiliser le code de type :
db.myCollection.find({ createdAt: { $type: 9 } })
Trouver les documents dont le type de champ est l'un de plusieurs types, par exemple, trouver les documents où le type du champ value est une chaîne de caractères ou un entier :
db.myCollection.find({ value: { $type: ["string", "int"] } })
Ou utiliser le code de type :
db.myCollection.find({ value: { $type: [2, 16] } })
Trouver les documents où le type du champ details est un objet et le type du champ score est un nombre à virgule flottante à double précision :
Exemple
$and: [
{ details: { $type: "object" } },
{ score: { $type: "double" } }
]
})
Ou utiliser le code de type :
Exemple
$and: [
{ details: { $type: 3 } },
{ score: { $type: 1 } }
]
})
En utilisant l'opérateur $type, vous pouvez interroger précisément le type de données de champs spécifiques dans les documents, ce qui permet d'effectuer un filtrage et une gestion plus fins des données.
Plus d’exemples
La base de données que nous utilisons s'appelle "example" et notre collection s'appelle "col". Voici les données que nous avons insérées.
Collection simple "col" :
>db.col.insert({
title: 'PHP 教程',
description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。',
by: 'Example',
url: 'http://www.example.com',
tags: ['php'],
likes: 200
})
>db.col.insert({title: 'Java 教程',
description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
by: 'Example',
url: 'http://www.example.com',
tags: ['java'],
likes: 150
})
>db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'Example',
url: 'http://www.example.com',
tags: ['mongodb'],
likes: 100
})
Utilisez la commande find() pour afficher les données :
> db.col.find()
{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "mongodb" ], "likes" : 100 }
Opérateur MongoDB - Exemple $type
Si vous souhaitez obtenir les données où title est de type String dans la collection "col", vous pouvez utiliser la commande suivante :
db.col.find({"title" : {$type : 2}})
ou
db.col.find({"title" : {$type : 'string'}})
Le résultat de sortie est:
{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Example", "url" : "http://www.example.com", "tags" : [ "mongodb" ], "likes" : 100 }
Autres extensions