mongodb - 是否有从一个文档返回多个结果的查询?

标签 mongodb

我有一个结构如下的文档-

Doc {
    "DocName": "DocName",
    "Array": [{
        "Name": "Name1",
        "Value": "Value1"
    },{
        "Name": "Name2",
        "Value": "Value2"
    },{
        "Name": "Name3",
        "Value": "Value3"
    }]
}

是否可以查询 Mongo,以便它以如下格式返回多个文档?

{
    DocName: "DocName",
    Name: "Name1",
    Value: "Value1"
},
{
    DocName: "DocName",
    Name: "Name2",
    Value: "Value2"
},
{
    DocName: "DocName",
    Name: "Name3",
    Value: "Value3"
}

最佳答案

mapReduce

记录对象:

> db.doc.findOne();
{
  "_id" : ObjectId("4ff5925327064149c3d7a31f"),
  "docname" : "lorem",
  "array" : [
    {
      "name" : "John",
      "value" : "Blond"
    },
    {
      "name" : "Eric",
      "value" : "Brown"
    }
  ]
}

map 功能:

map = function () {
  var docname = this.docname;
  this.array.forEach(function (item) {
    emit(item, {'docname': docname});
  });
}

归约函数:

reduce = function(key, value) {
  return value;
}

整合:

res = db.doc.mapReduce(map, reduce, { out: 'output' });

查询:

db.output.find();

结果:

{ "_id" : { "name" : "Eric", "value" : "Brown" }, "value" : { "docname" : "lorem" } }
{ "_id" : { "name" : "John", "value" : "Blond" }, "value" : { "docname" : "lorem" } }

这不完全是您想要的,但它应该可以帮助您入门。

关于mongodb - 是否有从一个文档返回多个结果的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342397/

相关文章:

javascript - Console.logging 一个对象显示该对象包含一个尚未分配的属性

javascript - 如何将类似数组的字符串转换为 Node.js 中的数组?

mongodb - 在开始和结束范围内分组和计数

node.js - 将函数应用于从 nodejs 中的 MongoDB 查询返回的所有文档的字段

MongoDB 停止未知原因

javascript - 使用 $regex 查询 Mongoose 不返回任何结果

node.js - MongoDB 查询返回空嵌套对象

sql-server - Mongodb ObjectId 生成器作为 SQL Server proc

python - 让 Spark、Python 和 MongoDB 协同工作

node.js - MongoDB - MongoError : Resulting document after update is larger than 16777216