gpt4 book ai didi

mongodb - 选择匹配mongodb中两个字段的concat值的记录

转载 作者:IT老高 更新时间:2023-10-28 13:12:57 33 4
gpt4 key购买 nike

有没有办法在 MongoDB 上做这样的事情?

select * from table where concat(field1, field2) = 'value'

为了澄清,我有一个全名数组,但文件的名字和姓氏是分开的,所以我想做这样的事情:

select * from table where concat(firstname, lastname) in ([ARRAY OF NAMES])

最佳答案

您只能使用聚合框架来做到这一点,而不能使用常规查找。

db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);

请注意,这将无法使用任何索引,因为 MongoDB 中不支持计算值的索引(目前)。

如果您在 field1 上有一个索引,并且知道您希望 field1 为 value 贡献多少字符,则可以像这样提高此聚合的性能:

db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);

其中 val 是“value”字符串的第一部分(但您不能比较比 field1 的最短可能值更多的字符。

EDIT 从 3.6 版开始,您可以使用 $expr 表达式在 find 中执行此操作:

db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})

关于mongodb - 选择匹配mongodb中两个字段的concat值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24662413/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com