MongoDB $typeOperator
In MongoDB wird der$type-Operator verwendet, um Dokumente abzufragen, deren Felder einen angegebenen Typ haben.
Der $type-Operator von MongoDB wird verwendet, um den BSON-Datentyp von Feldern abzufragen.
Damit können Sie einen oder mehrere Typen angeben und es werden Dokumente zurückgegeben, die diesen Typen entsprechen.
Im Folgenden finden Sie eine ausführliche Einführung und Beispiele zum $type-Operator.Syntax:
db.collection.find({ field: { $type: <type> } })
- field: das Feld, dessen Typ überprüft werden soll.
- type: der angegebene BSON-Typ, der ein numerischer Code des Typs oder eine Zeichenkette des Typnamens sein kann.
BSON-Typen
Im Folgenden sind gängige BSON-Typen und ihre entsprechenden numerischen Codes und Zeichenkettennamen aufgeführt:
| Typcode | Typname |
|---|---|
| 1 | double |
| 2 | string |
| 3 | Objekt |
| 4 | array |
| 5 | binData |
| 6 | undefined |
| 7 | objectId |
| 8 | bool |
| 9 | date |
| 10 | null |
| 11 | regex |
| 12 | dbPointer |
| 13 | javascript |
| 14 | Symbol |
| 15 | javascriptWithScope |
| 16 | int |
| 17 | timestamp |
| 18 | long |
| 19 | decimal |
| 255 | minKey |
| 127 | maxKey |
Beispiel
Finden Sie Dokumente, deren Feldtyp eine Zeichenkette ist:
db.myCollection.find({ fieldName: { $type: "string" } })
Oder verwenden Sie den Typcode:
db.myCollection.find({ fieldName: { $type: 2 } })
Finden Sie Dokumente, deren Feldtyp eine Zahl ist, zum Beispiel Dokumente, bei denen der Feldtyp von age eine Ganzzahl ist:
db.myCollection.find({ age: { $type: "int" } })
Oder verwenden Sie den Typcode:
db.myCollection.find({ age: { $type: 16 } })
Finden Sie Dokumente, deren Feldtyp ein Boolean ist:
db.myCollection.find({ isActive: { $type: "bool" } })
Oder verwenden Sie den Typcode:
db.myCollection.find({ isActive: { $type: 8 } })
Finden Sie Dokumente, deren Feldtyp ein Datum ist:
db.myCollection.find({ createdAt: { $type: "date" } })
Oder verwenden Sie den Typcode:
db.myCollection.find({ createdAt: { $type: 9 } })
Finden Sie Dokumente, deren Feldtyp einer von mehreren Typen ist, zum Beispiel Dokumente, bei denen der Feldtyp von value eine Zeichenkette oder eine Ganzzahl ist:
db.myCollection.find({ value: { $type: ["string", "int"] } })
Oder verwenden Sie den Typcode:
db.myCollection.find({ value: { $type: [2, 16] } })
Finden Sie Dokumente, bei denen der Feldtyp von details ein Objekt und der Feldtyp von score eine Gleitkommazahl mit doppelter Genauigkeit ist:
Beispiel
$and: [
{ details: { $type: "object" } },
{ score: { $type: "double" } }
]
})
Oder verwenden Sie den Typcode:
Beispiel
$and: [
{ details: { $type: 3 } },
{ score: { $type: 1 } }
]
})
Durch die Verwendung des $type-Operators können Sie den Datentyp bestimmter Felder in Dokumenten präzise abfragen und dadurch eine granularere Datenfilterung und -verwaltung vornehmen.
Weitere Beispiele
Die Datenbank, die wir verwenden, heißt "example" und unsere Sammlung heißt "col". Im Folgenden sind die Daten, die wir eingefügt haben.
Einfache Sammlung "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
})
Verwenden Sie den Befehl find(), um die Daten anzuzeigen:
> 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 }
MongoDB-Operator - $type-Beispiel
Wenn Sie die Daten abrufen möchten, bei denen title in der Sammlung "col" ein String ist, können Sie den folgenden Befehl verwenden:
db.col.find({"title" : {$type : 2}})
oder
db.col.find({"title" : {$type : 'string'}})
Das Ausgabeergebnis ist:
{ "_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 }
Andere Erweiterungen