0

私はMongoDBデータベースでperlを使ってこのクエリを実行しようとしています:

$db->$collection->find({"_id" : { "$in" : ["4f520122ecf6171327000137", "4f4f49c09d1bd90728000034"]}});

ただし、何も返さず、2つのドキュメントを返す必要があります。このクエリの何が問題になっていますか?

ありがとうございました。

編集:それも機能しません:

$db->$collection->find( {_id => "4f520122ecf6171327000137"} );
4

1 に答える 1

16

まず、正しい構文を使用していることを確認してください。最初の例は、クエリパラメータとしてJSONのチャンクを含めているため、有効なPerlコードではありません。

次に、これらのID値がMongoDB ObjectIDであると仮定すると、通常の文字列と区別するためにOIDオブジェクトを作成する必要があります。そして、必ず一重引用符('')を使用して$inください。そうしないと、Perlは$in変数として補間しようとします(おそらく何も含まれていません)。

だから私はあなたがこのようなことをしたいと思います:

$db->$collection->find( {
    "_id" => { 
        '$in' => [ MongoDB::OID->new( value => "4f520122ecf6171327000137" ), 
                   MongoDB::OID->new( value => "4f4f49c09d1bd90728000034" )
                 ]
             } 
} );

編集:さらに、自動ロードされたメソッド名を使用してコレクションを取得することは、しばらくの間非推奨になりました。使用したほうがいいです$db->get_collection( "collection name" )->find( ... )

于 2013-01-31T01:10:37.723 に答える