免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2151 | 回复: 7
打印 上一主题 下一主题

[MongoDB] Mongodb模块怎么查询多条? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-12 17:28 |只看该作者 |倒序浏览



use MongoDB;
use Data:umper;

my $connection = MongoDB::Connection->new( host => 'localhost', port => 27017 );
my $database   = $connection->foo;
my $collection = $database->bar;
   $collection->insert( { 'id' => '1', 'data' => 'n1' });
   $collection->insert( { 'id' => '1', 'data' => 'n2' });
my $data = $collection->find();                 
print Dumper $data;

在文档里只找到find_one方法,只能查询出一条记录

=item C<SELECT * FROM users>

    $db->users->find;

文档里的find方法
my $data       = $collection->find();
print Dumper $data

也没有数据记录返回,只有数据库信息


> db.bar.find()
{ "_id" : ObjectId("4f869e4a0933a99d63000000", "data" : "n1", "id" : "1" }
{ "_id" : ObjectId("4f869f4c93bda4b563000001", "data" : "n2", "id" : "1" }
数据库是有2条记录的

这个模块能不能查询多条?

论坛徽章:
0
2 [报告]
发表于 2012-04-12 18:11 |只看该作者
本帖最后由 sjdy521 于 2012-04-12 18:16 编辑

先说下我的不理解的地方,望指教
MongoDB这玩意应该是非关系型数据库吧,可以一个key对应两个value?不应该是一个key对应一个value?
我对nosql不是非常熟悉,请熟悉的人指导下我。。

另外,看cpan上 这个模块只提供了一个find_one的方法,假如真的可以存在多条记录的话。
那么是不是有可能类似 while($object->find_one){}这种形式循环取出所有数据?(前提是find_one每次会取出不同的一个,作者没有说明这个特性。。)

论坛徽章:
0
3 [报告]
发表于 2012-04-12 19:05 |只看该作者
但是执行 print my $data = $collection->find({'id' => '1'})->count();
2
他的确是有多条记录的

论坛徽章:
0
4 [报告]
发表于 2012-04-13 09:26 |只看该作者
前几天刚看了下,应该是:
  1. my $data       = $collection->find();
  2. my $i = 0;
  3. while (my $object = $data->next) {
  4.         foreach $key(keys %{$object}){
  5.                 print "the $i++ result is $key => ${$object}{$key}\n";
  6.         }
  7. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-04-13 10:24 |只看该作者
回复 4# myeverthing


    多谢 要的就是这个

论坛徽章:
0
6 [报告]
发表于 2012-04-13 10:49 |只看该作者
回复 5# sai9924


    你就是要的那个??
find是查询出所有的记录,你要的是id=1的所有记录啊!

论坛徽章:
0
7 [报告]
发表于 2012-04-13 10:50 |只看该作者
回复 3# sai9924


    find() 可以传递参数?

论坛徽章:
0
8 [报告]
发表于 2012-04-13 10:54 |只看该作者
回复 7# sjdy521


    $collection->find({'id' => '1'});
    find 可以传递参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP