【问题标题】:mongodb stitch returns all fieldsmongodb 缝合返回所有字段
【发布时间】:2018-09-27 20:48:11
【问题描述】:

我正在尝试为我的所有文档只取回一个字段。

我是 mongoDB 的新手,但我不明白为什么这不起作用。

var docs = db.collection("articles").find({}, { _id: 0, title:1}).asArray();

我有这个查询,它返回所有字段,尽管投影只需要标题字段。查询运行没有任何错误。也许我遗漏了一些非常明显的东西,需要第二双眼睛才能发现它。

感谢任何帮助!

注意:我使用的是 mongoDB Atlas 的 Stitch API。

【问题讨论】:

  • 您的查询没有任何问题,所以我猜您的观察一定有些不正确……不过,不确定这是怎么发生的。您是否正在查看缓存的输出?
  • 您是在缝合功能中执行此操作吗?您能否添加数据示例?
  • 上面这行是我通过连接数据库后调用的。一个承诺电话。我正在通过查看结果。 Chrome 调试器,深入到代码的每一部分,没有任何问题。最后结果证明无论如何我都需要所有字段,但我仍然对上述为什么不起作用感到困惑

标签: javascript angularjs mongodb mongodb-stitch


【解决方案1】:

我猜你正在使用MongoDB Stitch Browser SDK(当前版本 4)。

在这种情况下,collectionRemoteMongoCollection 的一个实例。其中find() 接受RemoteFindOptions 格式的选项。您可以定义一个projection 来限制匹配文档的字段,方法是使用projection 键定义一个对象。

例如:

const client = stitch.Stitch.initializeDefaultAppClient('app-id');
const db = client.getServiceClient(stitch.RemoteMongoClient.factory, 'mongodb-atlas').db('databaseName');

 client.auth.loginWithCredential(new stitch.AnonymousCredential())
       .then(() => {
          db.collection('collectionName')
            .find({}, 
                  {"projection":{"_id":0, "title": 1}}
             )
            .asArray().then(docs => {
              // prints results 
              console.log(docs);
          });
        }).catch(err => {
          // Handle error here
          console.log("Error", err);
 });

【讨论】:

  • 万是正确的。从 Stitch 函数调用 find 时,投影作为第二个参数提供。使用 JavaScript SDK 时,投影在选项对象中提供,这是 find 的第二个参数。
猜你喜欢
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2020-01-12
相关资源
最近更新 更多