MongoDB使用$ ref和$ id查找查询

时间:2015-05-26 22:51:33

标签: mongodb mongodb-query

我正在努力使用mongodb查询。

鉴于此查询1:

db.procedure_executions.find({'foo.bar':'whatever'})

和此查询2:

{
    "_id": ObjectId("5564df8d30041530fb68e1eb"),
    "_class": "eu.whatever.model.db.impl.DbProcedureExecutionImpl",
    "procedure": {
        "_class": "eu.whatever.common.model.impl.ProcedureImpl",
        "className": "eu.whatever",
        "name": "nameOfMyProcedure",
        "kind": "METHOD",
        "arguments": []
    },
    "caller": {
        "$ref": "procedure_executions",
        "$id": ObjectId("5564df8d30041530fb68e1e8")
    }
}

查询1在缩短版本中返回许多过程对象:

            var trimLine = new fabric.Rect({
                width: Math.round(obj.box_dimensions.trimbox.width,2),
                height: Math.round(obj.box_dimensions.trimbox.height,2),
                strokeWidth: 1,
                stroke: 'rgb(255,2,2)',
                fill: '',
                selectable: false
            });

查询2的结果对象在查询1中被称为“调用者”。

如何在单个嵌套查询中通过引用的调用方及其属性(查询2)过滤过程(查询1)?

我遇到了$ in。是否可以将查询添加到$ in?

中的另一个集合(procedure_executions)

1 个答案:

答案 0 :(得分:0)

"我自己就是新人",但请尝试:

db.procedures.find(
     {'procedure.name':'nameOfMyProcedure'},
     {'caller.$ref': 'procedure_executions'})

来自$and

  

注意:

     

MongoDB在指定逗号分隔的表达式列表时提供隐式AND操作。当必须在多个表达式中指定相同的字段或运算符时,必须使用带有AND运算符的显式$and