1
db.foo.find();


_id    | type
-------------
10001     1
10002    'a'
10003    [1, 2, 3, 4]

ご存知のように、$typeは次のように mongo クエリの型コードと一致します。

db.foo.find({type: {$type: 4}});

_id | タイプ

----------

10003、[1、2、3、4]

次に、 test.jsという JavaScript シェル スクリプトを作成します。

var curs = db.foo.find();
curs.forEach(showTypeCode);
function showTypeCode(cur) {
  print(cur.type + '-' + typeof(cur.type));
};

結果:

1-number
a-string
1,2,3,4-object (this is an array, it's 4 in mongo)

これが私の質問です。mongoシェルで配列型コードを取得するにはどうすればよいですか

4

1 に答える 1

1

最初のクエリ:

db.foo.find({type: {$type: 4}});

バグのため、実際には機能しません。これはMongoDB内の既知のバグであり、$type演算子を使用するときに配列をオブジェクトとして読み取ります。投票して、このJIRAにサポートを提供できます:https ://jira.mongodb.org/browse/SERVER-1475

JSの問題を解決することに関しては、この質問が役立つかもしれません。渡されたパラメーターが配列であるかどうかを検出しますか?Javascript

配列はクラスArrayのオブジェクトであるため、オブジェクトが返されます。のインスタンスをテストすると、Array機能するはずです。

于 2012-11-12T08:57:15.563 に答える