【问题标题】:Mongodb not returning specific fieldsMongodb不返回特定字段
【发布时间】:2015-09-29 23:59:52
【问题描述】:

我试图从文档中只返回一个字段sessions

我正在使用当前查询(它返回整个文档):

yield users.findOne({
    '_id': id // var id holds object id ObjectId("560ae1dc53cb3222679430f1")
}, {
    '_id': 0, // <--- being ignored
    'sessions': 1 // <--- being ignored
});

我在 mongo shell 中尝试过,它应该可以正常工作:

db.users.find({"_id":ObjectId("560ae1dc53cb3222679430f1")},{"sessions":1,"_id":0}).pretty() // <--- works

我目前正在使用基于mongoskinco-monk。所以它应该可以工作。

【问题讨论】:

    标签: node.js mongodb mongoskin co-monk


    【解决方案1】:

    文档中没有明确说明,但“选项”对象有明确的键名语法:

    yield users.findOne({ '_id': id }, { 'fields': { '_id': 0, 'sessions': 1  }});
    

    所以它的工作方式与 MongoDB shell API 有点不同。这同样适用于其他选项,例如 sort

    【讨论】:

    • 哇它好用。你能链接你在哪里找到这个吗,很想阅读它的其余部分(将需要它)。
    • 发现我应该一直看着 github.com/christkv/node-mongodb-native 为 mongoskin 包装它
    【解决方案2】:

    接受的答案在我的情况下不起作用,所以我深入研究了文档,这是我为字段选项找到的:不推荐使用 options.projection,并得到了相应的控制台中的警告。 .project().find() 中的链接在我的情况下对 .findOne() 不起作用,所以它必须在使用投影的选项中:

    yield users.findOne({
        '_id': id 
    }, { projection: { //projection rather than fields
        '_id': 0,
        'sessions': 1 }
    });
    

    这里是:mongodb.github.io/node-mongodb-native

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2012-07-03
      • 2015-06-11
      相关资源
      最近更新 更多