所以,我有一个数据库,其中包含许多文档中的数组。
我想要找到整个文档,其中我的查询与一个或多个数组元素完全匹配,使用$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
的组合,可以找到不寻常数组中的项目但忽略数组分隔符,即返回至少有一个匹配defindex
和一个具有效果的项目满足条件的文档(因此将使用多个项目来满足条件)。
我花了一天半的时间,已经取得了很大进展,甚至找到了一个几乎与我的问题相同但缺少任何$in
部分提及的问题。-> MongoDB:Match multiple array elements
tl;dr: 是否有一种有效的方法来进行
$in
+$elemMatch
?
感谢您的阅读并能够阅读我格式有些糟糕的帖子,谢谢。