如何仅获取数组中的元素-mongodb [重复]
Posted
技术标签:
【中文标题】如何仅获取数组中的元素-mongodb [重复]【英文标题】:How to get only element in array - mongodb [duplicate] 【发布时间】:2021-10-29 03:39:24 【问题描述】:您好,对不起,我是 nosql 和 mongodb 的新手,请帮帮我 这是我的示例数据
[
"_id": ObjectId("611532b19c6e77ad0fd50c1c"),
"status": true,
"role_name": "DEVELOPER",
"descr": "DEVELOPER",
"menu": [
"permissions": [
ObjectId("60eeabbc9ca3e3a4f03ff5ee"),
ObjectId("611125cad17b0c71595298d4"),
ObjectId("6113e8d69c6e77ad0fd50c08"),
ObjectId("61279df3f544f6c2db48b92d"),
ObjectId("612a3f061a1fcead8871e821")
],
"_id": ObjectId("612a46c41a1fcead8871e83f"),
"menu_id": ObjectId("611fe0b60734048a04812020")
,
"permissions": [
ObjectId("60eeabbc9ca3e3a4f03ff5ee"),
ObjectId("611125cad17b0c71595298d4"),
ObjectId("6113e8d69c6e77ad0fd50c08"),
ObjectId("61279df3f544f6c2db48b92d"),
ObjectId("612a3f061a1fcead8871e821")
],
"_id": ObjectId("612a46c41a1fcead8871e840"),
"menu_id": ObjectId("611fee7e0734048a04812022")
,
"permissions": [
ObjectId("60eeabbc9ca3e3a4f03ff5ee"),
ObjectId("611125cad17b0c71595298d4"),
ObjectId("6113e8d69c6e77ad0fd50c08"),
ObjectId("61279df3f544f6c2db48b92d"),
ObjectId("612a3f061a1fcead8871e821")
],
"_id": ObjectId("612a46c41a1fcead8871e841"),
"menu_id": ObjectId("6128c64f9bd697e83dbe47b1")
,
"permissions": [
ObjectId("60eeabbc9ca3e3a4f03ff5ee"),
ObjectId("611125cad17b0c71595298d4"),
ObjectId("6113e8d69c6e77ad0fd50c08"),
ObjectId("61279df3f544f6c2db48b92d"),
ObjectId("612a3f061a1fcead8871e821")
],
"_id": ObjectId("612a46c41a1fcead8871e842"),
"menu_id": ObjectId("6128c5e19bd697e83dbe47ac")
],
"createdAt": ISODate("2021-08-12T14:39:45.505+0000"),
"updatedAt": ISODate("2021-08-28T14:23:00.040+0000"),
"__v": NumberInt(10)
]
当我输入 menu_id = ObjectId("611fe0b60734048a04812020") 时想要得到什么
"permissions" : [
ObjectId("60eeabbc9ca3e3a4f03ff5ee"),
ObjectId("611125cad17b0c71595298d4"),
ObjectId("6113e8d69c6e77ad0fd50c08"),
ObjectId("61279df3f544f6c2db48b92d"),
ObjectId("612a3f061a1fcead8871e821")
],
"_id" : ObjectId("612a46c41a1fcead8871e83f"),
"menu_id" : ObjectId("611fe0b60734048a04812020")
,
这是我的查询
db.getCollection("tbl_roles").find(
"menu.menu_id": ObjectId("611fe0b60734048a04812020")
)
-- 仅用于发布问题的无意义词 在出版和平面设计中,Lorem ipsum 是一种占位符文本,通常用于演示文档或字体的视觉形式,而不依赖于有意义的内容。在最终副本可用之前,Lorem ipsum 可以用作占位符。
【问题讨论】:
【参考方案1】:您可以使用$elemMatch
,它只返回数组中匹配的第一个元素。
如文档中所述:
$elemMatch 运算符将查询结果中的字段内容限制为仅包含与 $elemMatch 条件匹配的 first 元素。
试试这个查询:
db.collection.find(,
"menu":
"$elemMatch":
"menu_id": ObjectId("611fe0b60734048a04812020")
)
请注意,您还可以在find
对象like this 中添加一些匹配项
例如here。
此外,如果出于某种原因需要从数组中获取多个结果,您可以使用 aggregate
查询,例如 this one
【讨论】:
以上是关于如何仅获取数组中的元素-mongodb [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何从js中的数组中删除元素[元素来自mongodb] [重复]