使用$ in运算符在mongo中查询

时间:2014-12-02 15:32:15

标签: mongodb

我有一个集合,其中包含具有以下结构的文档:

array (
  '_id' => new MongoId("54369e2904f7055598463483"),
  'user' => '123',
  'model' => 
  array (
    'test' => 
    array (
      '0' => 'test1',
      '1' => 'test2',
      '2' => 'test3',

    ),
  ),
)

如果我在Rock Mongo中进行下一个查询,我得到了结果。

array(
 'user' => array(
  '$in' => array(
    '0' => '123'
    )
 )
)

但是,如果我尝试获取具有例如key =>的文档对值'0'=> 'test1'& '1'=> 'test2'我没有得到下一个查询的任何数据:

array(
 'model' => array(
    'test' => array(
  '$in' => array(
    '0' => 'test1',
    '1' => 'test2',
    )
 )
 )
)

我犯错误的地方?

提前致谢

1 个答案:

答案 0 :(得分:0)

PHP的数组/散列混合使您的示例有点难以阅读和推理。但是这是你的模型在Mongo的原生语法(一种区分列表和地图的语言)中的样子:

{
    "_id": ObjectId(...),
    "user": 123,
    "model": {"test": ["test1", "test2", "test3"]}
}

所以你想查询model.test(嵌套文档)。使用Mongo的本机语法,您将执行以下操作:

collection.find({"model.test": {"$in": ["test1", "test2"]})

有关详细信息,请参阅http://docs.mongodb.org/manual/reference/method/db.collection.find/