[英]Can't retrieve all Mongo Documents with a query - only some are returned
I'm having trouble retrieving all documents that match a query on MongoDB. 我在检索与MongoDB上的查询匹配的所有文档时遇到了麻烦。 I'm using PHP.
我正在使用PHP。
Here's a quick test: 这是一个快速测试:
## Document 1
{
"_id": ObjectId("4ea80a1eb73e26ef1500cc9e"),
"search": {
"0": "clothing",
"1": "golden",
....etc
## Document 2
{
"_id": ObjectId("4ea81e78b73e26ef15339c65"),
"search": {
"0": "and",
"1": "belt",
"2": "brown",
"3": "golden",
...etc
## query
$search = array('golden');
$products = Products::all( array('search'=>array('$in'=> $search ))) // only document 1 is returned.
//this is a quick test. in the end I'd like to have:
$search = array('golden', 'belt'); //document 2 is returned
Documents are created from a PHP array, with 'search' being a sorted and uniqued array of string elements: sort($search); 文档是从PHP数组创建的,其中“ search”是字符串元素的排序且唯一的数组:sort($ search); $search = array_unique($search);
$ search = array_unique($ search);
$new->setProperty('search', $search);
I'm pretty new to Mongo, but I don't understand why, if the syntax of my document is not correct, then one is returned instead of none. 我对Mongo还是很陌生,但是我不明白为什么,如果我的文档语法不正确,则返回一个而不是一个。
Thank you. 谢谢。
I don't know what in PHP, but this works: 我不知道PHP中有什么,但这可以工作:
> db.items.find({})
{ "_id" : ObjectId("4ea98d0fa287fedc0281feee"), "name" : "first", "keywords" : [ "one", "two", "three", "four" ] }
{ "_id" : ObjectId("4ea98d1aa287fedc0281feef"), "name" : "first", "keywords" : [ "two", "three", "four", "five" ] }
{ "_id" : ObjectId("4ea98d23a287fedc0281fef0"), "name" : "first", "keywords" : [ "four", "five", "six" ] }
{ "_id" : ObjectId("4ea99243a287fedc0281fef1"), "name" : "first", "keywords" : [ "five", "six" ] }
{ "_id" : ObjectId("4ea99247a287fedc0281fef2"), "name" : "first", "keywords" : [ "five", "six", "seven" ] }
{ "_id" : ObjectId("4ea99273a287fedc0281fef3"), "name" : "first", "keywords" : [ "one", "two", "seven" ] }
{ "_id" : ObjectId("4ea9927aa287fedc0281fef4"), "name" : "first", "keywords" : [ "one", "two", "seven" ] }
> db.items.find({$or:[{keywords:"four"},{keywords:"five"}]})
{ "_id" : ObjectId("4ea98d0fa287fedc0281feee"), "name" : "first", "keywords" : [ "one", "two", "three", "four" ] }
{ "_id" : ObjectId("4ea98d1aa287fedc0281feef"), "name" : "first", "keywords" : [ "two", "three", "four", "five" ] }
{ "_id" : ObjectId("4ea98d23a287fedc0281fef0"), "name" : "first", "keywords" : [ "four", "five", "six" ] }
{ "_id" : ObjectId("4ea99243a287fedc0281fef1"), "name" : "first", "keywords" : [ "five", "six" ] }
{ "_id" : ObjectId("4ea99247a287fedc0281fef2"), "name" : "first", "keywords" : [ "five", "six", "seven" ] }
> db.items.find({keywords:{$in:["four","five"]}})
{ "_id" : ObjectId("4ea98d0fa287fedc0281feee"), "name" : "first", "keywords" : [ "one", "two", "three", "four" ] }
{ "_id" : ObjectId("4ea98d1aa287fedc0281feef"), "name" : "first", "keywords" : [ "two", "three", "four", "five" ] }
{ "_id" : ObjectId("4ea98d23a287fedc0281fef0"), "name" : "first", "keywords" : [ "four", "five", "six" ] }
{ "_id" : ObjectId("4ea99243a287fedc0281fef1"), "name" : "first", "keywords" : [ "five", "six" ] }
{ "_id" : ObjectId("4ea99247a287fedc0281fef2"), "name" : "first", "keywords" : [ "five", "six", "seven" ] }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.