0

私は Perl MongoDB ライブラリーをいじっていて、非常に単純なことを行う方法を理解するのに苦労しています。

挿入時にデータ フィールドの順序を維持するにはどうすればよいですか? 私のコードは次のとおりです。

use MongoDB;
use MongoDB::Database;
use MongoDB::OID;


my $conn = MongoDB::Connection->new;
my $db = $conn->test;
my $users = $db->testlogwiki;


$users->insert
(
   {
     "product" => "WooHoo",
     "errcode" => "WM2001_89873",
     "solution1" => "Hit the computer.",
     "line_text" => "Inserted in Perl too"
   }
);

戻って MongoDB でレコードがどのように挿入されたかを調べると、次のようになります。

db.testlogwiki.find([それを見つける基準]).pretty();

"_id" : ObjectId("4fc62c2900ece6040c000000"),
"solution1" : "Hit the computer.",
"product" : "WooHoo",
"errcode" : "WM2001_89873",
"line_text" : "Inserted in Perl too"

それは私が望んでいる順序ではありません...どうすれば私が望む順序にすることができますか?

4

2 に答える 2

5

Perl と Mongo の BSON ハッシュはどちらも、定義上順序付けされていません。何らかの方法でプロパティを注文する必要がある場合は、自分で追跡する必要があります。

于 2012-05-30T15:23:00.733 に答える
1

MongoDB は必ずしもこれと関係があるわけではありません - Perl ハッシュはそもそも順序を保持しません:

$ perl -MData::Dumper -E 'my $foo = { one => 1, two => 2, three => 3 }; print Dumper($foo);'
$VAR1 = {
          'three' => 3,
          'one' => 1,
          'two' => 2
        };

Tie::IxHashを使用してメモリ内の順序を保持するハッシュを作成できますが、MongoDB に挿入および取得するときに順序を保持するかどうかはわかりません。

于 2012-05-30T15:15:56.410 に答える