2011-10-27 7 views
0

MongoDBのクエリに一致するすべてのドキュメントを取得できません。私はPHPを使用しています。ここで クエリですべてのMongoドキュメントを取得できません - 一部のみが返されます

は、簡単なテストです:

## 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 

文書が文字列要素のソートとuniqued配列されて「検索」で、PHPの配列から作成されます。 ソート($検索)。 $ search = array_unique($ search);

$new->setProperty('search', $search); 

、その後1が代わりなしで返され、私はモンゴにかなり新しいですが、私の文書の構文が正しくない場合、私は、理由を理解していません。

ありがとうございます。

答えて

0

私は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" ] } 
+0

、まだ運:$製品=製品::すべて(配列( '$または' =>配列(配列( 'search' => 'golden'))))); - いくつかのドキュメントだけが返されますが、ドキュメント2はありません。 – koichirose

+0

これは、シェルで、またはRockMongoのようなWeb管理者経由でクエリを実行する場合と同じです – koichirose

関連する問題