Mongodb等于引用另一个集合

时间:2019-04-11 14:35:40

标签: mongodb

我正在尝试执行mongodb查询,该查询按一定的限制按层次结构收集对象。目前,我在使用限制子句时遇到问题:我需要检查来自不同集合的值之间的相等性:

db.getCollection('collection1').aggregate([{ 
            "$graphLookup": {
                "from": "collection1",
                "startWith": "$childrenIds",
                "connectFromField": "childrenIds",
                "connectToField": "_id",
                "as": "childrenResult",
                "restrictSearchWithMatch": {"$or": [{"type": {"$ne": "Some Type"}},{"db.getCollection('collection2').findOne({'_id': 'someReferenceFieldFromCollection1')}).status": {"$eq": "ENABLED"}}]}
            }
        }, {
            "$unwind": "$childrenResult"
        }, {
            "$replaceRoot": {
                "newRoot": "$childrenResult"
            }
        }])

似乎我不能使用嵌套的mongodb查询。不过,当我执行嵌套查询时

db.getCollection('collection2').findOne({'_id': 'someId')}).status

我知道了它的状态值。

即使我对ID进行了硬编码,我也在collection2中进行查找,但我的层次结构查询无法正常工作。

所以我的问题是如何进行这种内部查询?

1 个答案:

答案 0 :(得分:0)

似乎mongodb不支持嵌套查询。因此,我已经重构了我的服务代码。