以下是我正在处理的收集数据。
{
"_id" : "1",
"embed_array" : [
{
"id" : 14,
"data" : "XXX"
},
{
"id" : 13,
"data" : "YYY"
},
{
"id" : 12,
"data" : "ZZZ"
}
]
},
{
"_id" : "2",
"embed_array" : [
{
"id" : 14,
"data" : "XXX1"
},
{
"id" : 13,
"data" : "YYY1"
},
{
"id" : 12,
"data" : "ZZZ1"
}
]
},
{
"_id" : "3",
"embed_array" : [
{
"id" : 14,
"data" : "XXX2"
},
{
"id" : 13,
"data" : "YYY2"
},
{
"id" : 12,
"data" : "ZZZ2"
}
]
}
这就是我想要的。
{
"id" : 14,
"data" : "XXX"
}
以下是搜索条件。 " _id":" 1", " embed_array":第一个数组文档。
我试过$ slice,但没有成功。
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
db.collection.find({
_id:"1"
},
{
_id:1,
embed_array:{
$slice: 1
}
})
第一步是使用{_id:“1”}过滤_id字段。然后我们使用投影来仅返回我们需要的信息。在这里,我们只想要“embed_array”的第一个元素,因此我们使用 $slice 运算符。
{$ slice:1}等于{$ slice:[0,1]},这意味着:获取索引0和1之间的数组元素
它会返回
{
"_id" : "1",
"embed_array" : [
{ "id" : 14, "data" : "XXX" }
]
}