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您的问题没有提到“有效载荷.状态”。因此,这确实是一个不同的问题,应该用一个全新的问题“清楚地”提出。但首先要寻找答案。因为你要问的问题我肯定我已经在这里提交了答案。