gpt4 book ai didi

arrays - MongoDB $elemMatch $in

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

所以,我有一个数据库,其中包含大量文档中的数组。我想使用 $in 找到我的查询与一个或多个数组元素完全匹配的整个文档。

所以,文档结构:

{
"_id": "76561198045636214",
"timecreated": 1311148549,
"unusual": [
{
"id": 1960169991,
"original_id": 698672623,
"defindex": 313,
"_particleEffect": 19
},
{
"id": 965349033,
"original_id": 931933064,
"defindex": 363,
"_particleEffect": 6
}
]
}

我有很多这样的文档,我想在一个文档条目中找到一个包含 defindex 313 和 _particleEffect 19 的数组,这意味着我必须使用 $elemMatch.

我还希望能够一次搜索许多不同的数组组合,例如一个数组,defindex 为 363,_particleEffect 为 19 或 6,这意味着我必须使用 $in.

但是,当我尝试将 $elemMatch 和 $in 放在查询中时,elemMatch 将与它无关,因为它不适用于数组。我做不到。

到目前为止我的尝试:

{unusual:{$all:[{"defindex":{"$in":[361,378]}},{"_particleEffect":{"$in":[30,0]}}]}}

(我最近的尝试,根本行不通。)

{"$and":[{"unusual.defindex":{"$in":[361,378]}},{"unusual._particleEffect":{"$in":[[30,36]]}}]}

还有更多我尝试了 $elemmatch$and 的组合。

(在异常数组中查找项目但忽略数组分隔 IE 它将返回一个文档,其中将使用多个项目来满足条件(因此至少一个项目的 defindex 匹配,一个项目具有效果。) )

我在这方面花了一天半的时间,并且已经走了很远,甚至发现了一个与我几乎相同但没有提及 $in 部分的问题。 -> MongoDB: Match multiple array elements

tl;dr: is there a way to effectively do $in + $elemMatch?

感谢您阅读并能够阅读我格式有些错误的帖子,谢谢。

最佳答案

您可以使用与您尝试使用不同的语法来实现相同的结果,但不会遇到 SERVER-3544 中的限制。

使用这个语法:

db.collection.find({ "unusual": {"$elemMatch":{"defindex":363,"_particleEffect":{"$in":[6,19]}  }} })

这将匹配具有 313 和 6 或 19 的数组元素的任何文档。

它也适用于 defindex 和 _particleEffect 的 {$in:[]},只要您打算匹配这两个列表的任意组合。

db.collection.find({ "unusual": {"$elemMatch":{"defindex":{"$in":[313,363]},"_particleEffect":{"$in":[6,19]}  }} })

关于arrays - MongoDB $elemMatch $in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19920829/

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