我在MongoDB中有以下数据(简化了我的问题所需要的内容)。
{
_id: 0,
actions: [
{
type: "insert",
data: "abc, quite possibly very very large"
}
]
}
{
_id: 1,
actions: [
{
type: "update",
data: "def"
},{
type: "delete",
data: "ghi"
}
]
}
我想要的是找到每个文档的第一个操作类型,例如
{_id:0, first_action_type:"insert"}
{_id:1, first_action_type:"update"}
(如果数据的结构不同,那很好,但是我需要以某种方式显示这些值。)
编辑:我已经尝试过db.collection.find({}, {'actions.action_type':1})
,但是很明显,这返回了动作数组的所有元素。
NoSQL对我来说还是很新的。以前,我将所有这些内容存储在关系数据库中的两个表中,并执行类似的操作SELECT id, (SELECT type FROM action WHERE document_id = d.id ORDER BY seq LIMIT 1) action_type FROM document d
。
您可以在投影中使用$ slice运算符。(但是对于您要做什么,我不确定在更新数组时数组的顺序是否保持不变。请记住)
db.collection.find({},{'actions':{$slice:1},'actions.type':1})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句