如何在mongodb中将一个字段与组合字段进行比较

时间:2019-02-22 07:27:29

标签: mongodb mongodb-query

我有这样的收藏

    sample document
    {
        "field1":"one",
        "field2":"two",
        "field3":"three",
        ...some more key values
    }

现在我具有字段值,该值是field1,field2和field3值的组合。即对于上述文档,我有 field =“ onetwothree” 一种选择是将该字段隔离为3个不同的字段,但由于其模式不固定而无法实现 所以我想这样比较
 db.collection.find({"filed1+field2+field3":field}) 但是不可能,因此一种解决方案是从集合中查找所有文档并进行逐一比较,但这不是优化的方法。那么这样做有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

从MongoDB v3.6开始,您可以运行以下查询:

db.collection.find({
    $expr: {
        $eq: [
            "onetwothree",
            { $concat: [ "$field1", "$field2", "$field3" ] }
        ]
    }
})

这是$concat$expr上的文档。