无法从mongo文档

时间:2017-02-18 07:57:14

标签: mongodb meteor mongodb-query

我想从mongo文档中获取所有字段,并且还想计算特定文档或文档对象的长度。 我的mongo文档看起来像: -

{
    "_id" : ObjectId("58a80b0521fd923fd908a7f8"),
    "qus0" : "question 0",
    "qus0_count" : 0,
    "qus1" : "question 1",
    "qus1_count" : 0,
    "qus2" : "question 2",
    "qus2_count" : 0,
    "qus10" : "question 10",
    "qus10_count" : 0
}

现在我使用查询来获取数据,它只给我:

  

db.test.findOne({"_id": ObjectId("58a80b0521fd923fd908a7f8")});

{
    "_id" : ObjectId("58a80b0521fd923fd908a7f8"),
    "qus0_count" : 0,
    "qus1_count" : 0,
    "qus2_count" : 0,
    "qus10_count" : 0
}

我期待着: -

{
    "_id" : ObjectId("58a80b0521fd923fd908a7f8"),
    "qus0" : "question 0",
    "qus0_count" : 0,
    "qus1" : "question 1",
    "qus1_count" : 0,
    "qus2" : "question 2",
    "qus2_count" : 0,
    "qus10" : "question 10",
    "qus10_count" : 0
}

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

我已根据您的示例创建了一个带有架构的集合,并且能够使用findOne获取文档的所有元素:

> db.test.find().pretty()
{
    "_id" : ObjectId("58a80b0521fd923fd908a7f8"),
    "qus0" : "question 1",
    "qus0_count" : 0,
    "qus10" : "question 10",
    "qus10_count" : 0
}
> db.test.findOne({"_id": ObjectId("58a80b0521fd923fd908a7f8")});
{
    "_id" : ObjectId("58a80b0521fd923fd908a7f8"),
    "qus0" : "question 1",
    "qus0_count" : 0,
    "qus10" : "question 10",
    "qus10_count" : 0
}

您可以使用上述查询编辑您的问题以帮助调试吗?

要回答有关查找文档大小的问题,可以使用Object.bsonsize():

> Object.bsonsize(db.test.findOne({"_id": ObjectId("58a80b0521fd923fd908a7f8")}));
99

答案 1 :(得分:0)

您的请求是在客户端还是服务器上进行的?

如果它在客户端上,请确保使用位于服务器中的Meteor.publish功能发布了集合的所有字段。

这将仅发布一些字段:

Meteor.publish('test', () => {
  return Test.find({}, {
    fields: {
      qus0_count: 1,
      qus1_count: 1,
      qus2_count: 1,
      qus10_count: 1,
    },
  });
});

这将发布所有字段:

Meteor.publish('test', () => {
  return Test.find({});
});