0

我的收藏是这样的

{
  "name":""
  "type":""
  "arr":[
   {
     "type":""
     "other field"
     ...
   },
  {
     "type":""
     "other field"
     ...
   }
}

我的条件是输入参数是名称。所以基于名称我必须获取文档,另外一个条件是数组外部和内部的类型应该匹配..需要单独获取这些记录..如何实现这一点

4

2 回答 2

0

性能不佳,但可以正常工作(http://docs.mongodb.org/manual/reference/operator/where

db.SOME_COLLECTION.find({
  name:'SOME_VALUE', 
  $where: 
    function() {
      for(var i = 0; i < obj.arr.length; i++) {
        if(obj.arr[i].type==obj.type) {
          return obj
        }
      }
    }
  }
)

ps 聚合框架已经解决了类比问题,但是在这种情况下,恕我直言,只有 $where 子句可用

于 2013-04-19T11:35:30.880 回答
0

如果我对您的理解正确,这就是您获得所需结果的方式

{name:"",type:"",arr.type:""}

您可以输入所需的值,它将返回所有匹配的记录。

于 2013-04-19T11:03:21.540 回答