简体   繁体   English

mongo DB 查询,如何 select 一个特定的元素

[英]mongo DB query, how to select a specifi elemet

I have a question for you,我有一个问题问你,

I have some document in my collection "q-1", I would like to extract one element of the table "data".我的集合“q-1”中有一些文档,我想提取表“数据”的一个元素。

to do this, I would like to retrieve the one with the id_propositions field at 19为此,我想检索 id_propositions 字段为 19 的那个

Do you have any idea?你有什么主意吗?

thx in advance提前谢谢

Gautier戈蒂埃在此处输入图像描述

One way to accomplish this is to use $unwind , which flattens arrays.实现此目的的一种方法是使用$unwind ,它会使 arrays 变平。

Consider the following ( you can also check out a live demo here ):考虑以下内容(您也可以在此处查看现场演示):

Database数据库

[
  {
    _id: 1,
    data: [
      {
        id_propositions: 10,
        desc: "a"
      },
      {
        id_propositions: 19,
        desc: "b"
      },
      {
        id_propositions: 19,
        desc: "c"
      },
      {
        id_propositions: 10,
        desc: "d"
      }
    ]
  },
  {
    _id: 2,
    data: [
      {
        id_propositions: 20,
        desc: "z"
      },
      {
        id_propositions: 19,
        desc: "x"
      },
      {
        id_propositions: 19,
        desc: "y"
      },
      {
        id_propositions: 20,
        desc: "w"
      }
    ]
  }
]

Query询问

db.collection.aggregate([
  {
    $unwind: "$data"
  },
  {
    $match: {
      "data.id_propositions": 19
    }
  }
])

Result结果

[
  {
    "_id": 1,
    "data": {
      "desc": "b",
      "id_propositions": 19
    }
  },
  {
    "_id": 1,
    "data": {
      "desc": "c",
      "id_propositions": 19
    }
  },
  {
    "_id": 2,
    "data": {
      "desc": "x",
      "id_propositions": 19
    }
  },
  {
    "_id": 2,
    "data": {
      "desc": "y",
      "id_propositions": 19
    }
  }
]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM