$type
का इस्तेमाल करें
आपके $match
. में ऑपरेटर :
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$type: 16}}} // city is a 32-bit integer
]);
संख्या के लिए कोई एक प्रकार का मान नहीं है, इसलिए आपको यह जानना होगा कि आपके पास किस प्रकार का नंबर है:
32-bit integer 16
64-bit integer 18
Double 1
या $or
. का उपयोग करें सभी प्रकार की संख्याओं से मेल खाने वाला ऑपरेटर:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {$or: [{city: {$type: 1}}, {city: {$type: 16}}, {city: {$type: 18}}]}}
]);
या यहां तक कि $not
. का उपयोग करें उन सभी दस्तावेज़ों से मिलान करने के लिए जहां city
एक स्ट्रिंग नहीं है:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$not: {$type: 2}}}} // city is not a string
]);
अपडेट किया गया
उन सभी दस्तावेज़ों से मिलान करने के लिए जहां city
एक संख्यात्मक स्ट्रिंग है जिसे आप नियमित अभिव्यक्ति का उपयोग कर सकते हैं:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: /^\d.*$/}} // city is all digits
]);