我有一个巨大的电子邮件转储,我试图在MongoDB中存储和查询。有1.6M的电子邮件,其中的每一个存储为输出从Node module来解析原始电子邮件到漂亮的JavaScript对象,就像这样:在MongoDB中为对象索引数组
{
"text" : "This is the text of my email",
"subject" : "Great opportunity",
"from" : [
{
"address" : "[email protected]",
"name" : "Chris Wilson"
}
],
"to" : [
{
"address" : "[email protected]",
"name" : "Person A"
},
{
"address" : "[email protected]",
"name" : "Person B"
},
{
"address" : "[email protected]",
"name" : "Person C"
}
],
"date" : ISODate("2015-01-05T21:38:55.000Z")
}
我需要能够有效地查找喜欢的东西“的所有电子邮件发送到[email protected]“或”由'Chris Wilson'发送的每封电子邮件(无论哪个电子邮件地址附加到该名称)。
蒙戈是非常愿意指数为我“到”和“从”查询,但我不能肯定的是,查询工作当我这样做:
db.emails.find({ "to.name": "Person A" })
这是一个覆盖查询,在一个键值对象数组的字段中查找特定属性的特定值?这些查询对我来说运行速度非常慢,但是它又是一个大型语料库。
UPDATE
这里是追加 “.explain” 上述查询的输出:
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 24,
"nscannedObjects" : 1646837,
"nscanned" : 1646837,
"nscannedObjectsAllPlans" : 1646837,
"nscannedAllPlans" : 1646837,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 17088,
"nChunkSkips" : 0,
"millis" : 84685,
"server" : "DCA-TM-GUEST-iMac.local:27017",
"filterSet" : false
}
“to.name”的索引正是我所需要的 - 谢谢! –