Gunakan $type
operator di $match
. Anda :
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$type: 16}}} // city is a 32-bit integer
]);
Tidak ada nilai tipe tunggal untuk angka sehingga Anda perlu mengetahui tipe angka yang Anda miliki:
32-bit integer 16
64-bit integer 18
Double 1
Atau gunakan $or
operator untuk mencocokkan semua jenis angka:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {$or: [{city: {$type: 1}}, {city: {$type: 16}}, {city: {$type: 18}}]}}
]);
Atau bahkan gunakan $not
untuk mencocokkan semua dokumen di mana city
bukan string:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$not: {$type: 2}}}} // city is not a string
]);
DIPERBARUI
Untuk mencocokkan semua dokumen di mana city
adalah string numerik Anda dapat menggunakan ekspresi reguler:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: /^\d.*$/}} // city is all digits
]);