MongoDB 找到 $and 任何值

Posted

技术标签:

【中文标题】MongoDB 找到 $and 任何值【英文标题】:MongoDB find $and with value of any 【发布时间】:2021-11-02 11:24:07 【问题描述】:

如何将 find 与 $and 一起使用,并获得一些价值?

例子

let  city, zanr, date  = req.body;

const selectedEvent = await Events.find(
  $and: [ address: city,  type: zanr ,  date: datum ],
);

因为在 req.body 中可以是值“all”,这意味着我有时不需要过滤。

有时可以是地址:任意

【问题讨论】:

【参考方案1】:

您可以使用基于req.bodyjavascript 动态生成查询。MQL 查询是JSON,我们可以生成它们、更改它们等。

例如

var q;

if(city=="all") q=[ type: zanr ,  date: datum ];
else q=[ address: city,  type: zanr ,  date: datum ];

const selectedEvent= await Events.find($and: q);

如果您拥有的不仅仅是城市,您可以为更多可选过滤器执行此操作。

【讨论】:

【参考方案2】:

如果城市全部从and数组中删除address:city 或使用address:$regex:'.*.'

 let  city, zanr, date  = req.body;

    const selectedEvent = await Events.find(
      $and: [ address:$regex:'.*.', type: zanr ,  date: datum ],
    );

【讨论】:

谢谢,但我在前端有三个过滤器 City [All, Berlin, New York] 如果有人会选择 zanr [Concerts, Meeting] 如果有人会选择 [Concerts] 和 city [All] 什么我应该这样做吗? 我更新我的答案address:$regex:'.*.' 表示所有地址 感谢分配!这帮助我使它更灵活:-))

以上是关于MongoDB 找到 $and 任何值的主要内容,如果未能解决你的问题,请参考以下文章

mongod user and role management

mongodb4.2---Configuration File Options--外部源配置文件值

为什么 MongoDB 连接数被用满了?

mongoD在windows下的安装

mongodb启用Profiling定位问题

MongoDB安装及使用