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 和从 MongoDB 中检索时保持它们的顺序。

于 2012-05-30T15:15:56.410 回答