sql >> データベース >  >> NoSQL >> MongoDB

言い方...フィールドが数字の場合に一致...mongodbで?

    $typeを使用します $matchの演算子 :

    db.zips.aggregate([
        {$project : {city:{$substr:["$city",0,1]}}},
        {$sort : {city : 1}}, 
        {$match: {city: {$type: 16}}}      // city is a 32-bit integer
    ]);
    

    数値のタイプ値は1つではないため、使用している数値のタイプを知る必要があります。

    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
    ]);
    


    1. mongoDBへのRESTAJAXリクエスト

    2. MongoDB-配列の最後の要素をクエリしますか?

    3. Mongo:キーによるクエリを1レベル深く

    4. 同じドキュメントMongoDB内のある配列から別の配列に要素を移動する