gpt4 book ai didi

MongoDB $或查询

转载 作者:行者123 更新时间:2023-11-28 04:56:32 25 4
gpt4 key购买 nike

我在 mongo shell 中运行以下查询:

db.Profiles.find ( { $or : [ { "name" : "gary" }, {"name":"rob} ] } )

它只是按预期返回任何内容(JSON)?

最佳答案

使用 $

对于问题中的查询,使用 $in 更合适

db.Profiles.find ( { "name" : { $in: ["gary", "rob"] } } );

为什么不起作用

缺少引号 - cli 正在等待您完成或的第二部分:

db.Profiles.find ( { $or : [ { "name" : "gary" }, {"name":"rob} ] } )
..............................................................^

您需要充分完成查询,以便 cli 解析它,然后说存在语法错误。

不区分大小写的匹配

如评论所示,如果您想以不区分大小写的方式进行搜索,则可以使用 $or$regex :

db.Profiles.find ( { $or : [ { "name" : /^gary/i }, {"name": /^rob/i } ] } )

或者,您只需使用一个正则表达式:

db.Profiles.find ( { "name" : /^(gary|rob)/i } )

但是,不以固定字符串开头的正则表达式查询无法使用索引(它无法使用索引并有效地执行“从此处开始,直到找不到匹配项,然后退出”),因此不是最佳选择。如果这是您的要求,最好存储规范化名称字段(例如 name_lc - 小写名称)并对其进行查询:

db.Profiles.find ( { "name_lc" : { $in: ["gary", "rob"] } } );

关于MongoDB $或查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42504135/

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