如何对 Mongo 中的数组进行 $and 查询?

发布于 2024-12-07 04:14:53 字数 402 浏览 0 评论 0原文

我在 mongo 中有一个集合,其中对象显示如下:

{ name:"Scott", bio:"Stumped", roles:["USR","ADM"] }

可能有更多角色。我想执行交集查询的任意组合,如下所示:

db.coll.find({$and:[{roles:"USR"},{roles:{$ne:"ADM"}}]})

有些查询可能都是角色 =,有些查询可能是所有角色 !=,有些查询可能像上面的示例一样混合。我在使用 $or 和 $nor 方面取得了一定程度的成功,但绝对没有任何查询可以理解与 $and 一起工作。我什至尝试利用 $where 和 $elemMatch 来模拟我想要的。我也确实在努力避免应用程序处理交集的多个查询。有想法吗?

I have a collection in mongo where objects appear as follows:

{ name:"Scott", bio:"Stumped", roles:["USR","ADM"] }

Many more roles are possible. I want to perform any combination of intersection queries, like so:

db.coll.find({$and:[{roles:"USR"},{roles:{$ne:"ADM"}}]})

Some queries may be all role =, some may be all roles !=, and some may be mixed as with the above example. I have had some measure of success with $or and $nor, but absolutely no query I can fathom works with $and. I have even tried leveraging $where and $elemMatch to emulate what I want. I am also really trying to avoid multiple queries w/ the application handling intersection. Ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云之铃。 2024-12-14 04:14:53

找到答案:

db.coll.find( {roles : { $all : ["USR"], $nin : ["ADM"]}} )

感谢 Hohhi 带领我走上正确的道路!

Found the answer:

db.coll.find( {roles : { $all : ["USR"], $nin : ["ADM"]}} )

Thanks Hohhi for leading me down the right path!

孤者何惧 2024-12-14 04:14:53
db.coll.find("roles":{$all:["USR","ADM"]}})

我认为这会对你有帮助,至少它会返回你正在寻找的结果

db.coll.find("roles":{$all:["USR","ADM"]}})

I think this would help you, at least it returns the result you are looking for

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文