我一直在愚弄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"
那不是我想要的订单......我怎么做到我想要的订单?
答案 0 :(得分:5)
根据定义,Perl和Mongo的BSON哈希值都是无序的。如果您需要以某种方式订购物业,您必须自己跟踪它。
答案 1 :(得分: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中检索时保留它们的顺序。