Mongodb 如何存储mongo子文档中的值列表

Mongodb 如何存储mongo子文档中的值列表,mongodb,Mongodb,我收集了这样的文件 { "_id" : ObjectId("59de9454e4b03289d79eeab4"), "type" : "Draft", . . . headers { "payload" : [ { "_id" : "ABC", }, { "_id" :"DEF", }] 我应该如何将_Id值存储在变量中,如 result: ["ABC","DEF"] 我尝试过这样的查询,但不起作用 var result = [] db.request.find({"_id" : Ob

我收集了这样的文件

  {
"_id" : ObjectId("59de9454e4b03289d79eeab4"),
"type" : "Draft",
.
.
.
headers
{
"payload" : [ 
{
"_id" : "ABC",
},
{
"_id" :"DEF",
}]
我应该如何将_Id值存储在变量中,如

result: ["ABC","DEF"]
我尝试过这样的查询,但不起作用

var result = []
db.request.find({"_id" : ObjectId("59de9454e4b03289d79eeab4")}).forEach(function(u) { result.push(u.headers.payload._id) })

您的输入文档格式有点不正确,但是如果
有效负载
标题的单个字段子字段,即它不是一个数组,并且您希望在提取
\u id
值之前执行
$match
或以其他方式过滤材料,并且您需要所有
\u id
值(不是一组不同的值)并在名为
result
的字段中整齐地返回,然后执行以下操作:

db.foo.aggregate([
{$match: {"_id": 1}}
,{$project: {result: {$map: {
                 input: "$headers.payload",
                 as: "z",
                 in: "$$z._id"
        }}
}}
            ]);

您的输入文档格式有点不正确,但是如果
有效负载
标题的单个字段子字段,即它不是一个数组,并且您希望在提取
\u id
值之前执行
$match
或以其他方式过滤材料,并且您需要所有
\u id
值(不是一组不同的值)并在名为
result
的字段中整齐地返回,然后执行以下操作:

db.foo.aggregate([
{$match: {"_id": 1}}
,{$project: {result: {$map: {
                 input: "$headers.payload",
                 as: "z",
                 in: "$$z._id"
        }}
}}
            ]);

使用
db.request.distinct(“headers.payload.\u id”)
如果您只需要一个“唯一”数组或期望它是唯一的。您的尝试无效,因为这些值位于文档本身的数组中。这很容易纠正,但是如果这是您真正需要的,那么使用
.distinct()
就更容易了。否则这很好,但在我的例子中,挑战是我需要数组中的“payload.\u id”值,前提是“payload.status”为“XYZ”。不确定distinct是否能够处理@Neillunny您的问题没有提到“有效载荷.状态”。因此,这确实是一个不同的问题,应该用一个全新的问题“清楚地”提出。但首先要寻找答案。因为你要问的问题我肯定我已经在这里提交了答案。使用
db.request.distinct(“headers.payload.\u id”)
如果您只需要一个“唯一”数组或期望它是唯一的。您的尝试无效,因为这些值位于文档本身的数组中。这很容易纠正,但是如果这是您真正需要的,那么使用
.distinct()
就更容易了。否则这很好,但在我的例子中,挑战是我需要数组中的“payload.\u id”值,前提是“payload.status”为“XYZ”。不确定distinct是否能够处理@Neillunny您的问题没有提到“有效载荷.状态”。因此,这确实是一个不同的问题,应该用一个全新的问题“清楚地”提出。但首先要寻找答案。因为你要问的问题我肯定我已经在这里提交了答案。