mongodb 查询返回值的问题

agclqq 2012-01-06 03:27:54

{
"Activities":[
{
"Activity":{
"id":"A_apply",
"Name":"apply",
"DisplayName":"申请假期"
}
},
{
"Activity":{
"id":"A_manager_check",
"Name":"manager_check",
"DisplayName":"主管审批"
}
}
]
}




现在查询条件已知"id"="A_apply",可以匹配到Activities的第一个元素,并且返回此结果,而不是整个文档,请问查询语句应该如何写
...全文
416 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
agclqq 2012-03-26
  • 打赏
  • 举报
回复

db.blog.find({"Activities.Activity.id":"A_apply"},{"Activities":{"$slice":1},"_id":0})
查询结果:
{ "Activities" : [
{
"Activity" : {
"id" : "A_apply",
"Name" : "apply",
"DisplayName" : "apply_A"
}
}
]
}

能得到这样的结果也不错,谢谢
shiyiwan 2012-03-08
  • 打赏
  • 举报
回复
测试了一下是可以的,把你的Activity结构简化了一下。
post={
"Activities":[
{ "Activity":{

"id":"A_apply",
"Name":"apply",
"DisplayName":"apply_A" }

},
{ "Activity":{

"id":"A_manager_check",
"Name":"manager_check",
"DisplayName":"manage_B" }

}
]
}
db.blog.insert(post)
db.blog.find({"Activities.Activity.id":"A_apply"},{"Activities":{"$slice":1}})
shiyiwan 2012-03-08
  • 打赏
  • 举报
回复
试试$slice
shiyiwan 2012-03-08
  • 打赏
  • 举报
回复
实际上因为它做为一个文档value,查询时会整体返回。折中办法似乎是用开发语言先全部取出来再封装成list,然后判断。

可以在mongodb社区问问,有没可能其他方式直接取出目标数组元素。
agclqq 2012-01-09
  • 打赏
  • 举报
回复
没有人来回答?

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧