因此,我有一个数据库,其中包含大量文档中的数组。我想找到整个文档,其中我的查询与一个或多个数组元素完全匹配,使用$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:匹配多个数组元素
tl;博士:有没有办法有效地做
$in
+$elemMatch
?
感谢您阅读并能够阅读我格式有些错误的帖子,谢谢。