查询数组中包含某元素的文档
例如在以下groups数据中查找events包含"a"的document:
{
"events": [
"12", "132", "14"
]
}
{
"events": [
"a", "b", "c"
]
}
代码
db.groups.aggregate([{$unwind:"$events"},{$match:{"events":{$eq:"a"}}}]).pretty()
本操作涉及到了Mongo的聚合管道。
unwind首先将文档中数组类型的字段拆分成多条,每条文档包含数组中的一个值。
例子: 第一个文档会生成如下三个文档
{"events":"12"}
{"events":"132"}
{"events":"14"}
参考资料:MongoDB基础教程系列--第七篇 MongoDB 聚合管道 - 二月羊 - 博客园
索引 - 稀疏(Sparse)索引
稀疏索引不对不含此key的document建索引。对于只存在于部分document的key,稀疏矩阵可以显著节省空间。