クエリですべてのMongoドキュメントを取得できません - 返されるのは一部のみです

MongoDBのクエリに一致するすべてのドキュメントを取得するのに問題があります。私はPHPを使用しています。

ここで簡単なテストです:

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

ドキュメントはPHP配列から作成され、 'search'はソートされた一意の文字列要素の配列です:     ソート($検索);     $ search = array_unique($ search);

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

私はMongoの新機能ですが、なぜドキュメントの構文が正しくない場合は、何も返されず、返されます。

ありがとうございました。

0

1 答え

私は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
追加された
このようにしてみると、まだ運がありません:$ products = Products :: all(array( '$ or' => array(array( 'search' => "golden")))); - 一部の文書のみが返されますが、文書2は返されません。
追加された 著者 koichirose,
これは、シェルやRockMongoのようなWeb管理者経由でクエリを実行する場合と同じです
追加された 著者 koichirose,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com