使用php mongo查询mongodb
我正在构建一个简单的消息传递系统,我在mongodb中收集了如下文档:使用php mongo查询mongodb,php,mongodb,Php,Mongodb,我正在构建一个简单的消息传递系统,我在mongodb中收集了如下文档: { "_id" : ObjectId("50ad003f9811e5bc5c000000"), "between" : [ "user1,user2,user3" ] } 我要执行此查询: db.conversations.find({'between': ["user1,user2,user3"]}); 要取回这份文件。此查询在mongo shell中工作 在php mongo中,我尝试了以下方法: $collecti
{ "_id" : ObjectId("50ad003f9811e5bc5c000000"), "between" : [ "user1,user2,user3" ] }
我要执行此查询:
db.conversations.find({'between': ["user1,user2,user3"]});
要取回这份文件。此查询在mongo shell中工作
在php mongo中,我尝试了以下方法:
$collection->find(array("between"=>array("user1", "user2", "user3")));
但它不起作用
我做错了什么?您不想在这里进行查询吗
db.collection.find( { "between" : { $in : ["user1", "user2", "user3"] } } );
请参见此处的查询:
使您的PHP查询看起来像:
$collection->find(array("between"=>array("$in"=>array("user1", "user2", "user3"))));
//untested, should be something similar to this.
或者,如果您正试图找到它,您是否能够:
$collection->find(array("between"=>array("user1,user2,user3")));
您是否尝试过:
$collection->find(array("between"=>"user1,user2,user3"));
或
首先,在保存数据时,必须使用数组而不是字符串
{ "between" : [ "user1,user2,user3" ] }
它存储在一个元素的数组“between”中“user1、user2、user3”
基本上,当您在shell中执行查询时,一切都正常,因为您要求的是一个包含一个元素的数组。但是在php中,您需要一个包含三个元素的数组
因此,当您保存数据时,最有可能的是您需要的:
{ "between" : [ "user1","user2","user3" ] }
这将为您提供一个包含三个用户的数组
然后阅读文档并根据需要调整查询:精确数组或仅数组中的某些元素中的
$in
运算符类似于SQLin
修饰符,允许您指定可能匹配的数组
考虑以下使用$或运算符的示例
$collection->find([
'select' => ['$in' => ['option 1', 'option 2', 'option 3']]
]);
无错误,它只返回一个空的结果no,因为in运算符匹配包含数组中任何元素的文档。我也不能使用$all操作符,因为我不想匹配一个包含所有3个用户和另一个用户的文档。因此,您只想匹配正好包含1,2和3个用户的文档?@QuArK:$collection->find(array(“between”=>array(“user1,user2,user3”);在php中不起作用?这似乎模拟了您在Mongo中使用的确切查询。。(注意用户的1,2,3之间缺少“分隔
$collection->find([
'select' => ['$in' => ['option 1', 'option 2', 'option 3']]
]);