【发布时间】:2013-11-24 02:37:16
【问题描述】:
所以,我有一个数据库,其中包含大量文档中的数组。
我想使用$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:有没有办法有效地做到
$in+$elemMatch?
感谢您阅读并能够阅读我格式有些错误的帖子,谢谢。
【问题讨论】:
标签: arrays mongodb mongodb-query