【问题标题】:Unable to filter MongoDB collection无法过滤 MongoDB 集合
【发布时间】:2022-01-22 17:03:19
【问题描述】:

在 MongoDB 中过滤集合的正确方法是什么?我需要按 ID 号过滤数组。

var collection = db.collection('blog');

try {

  collection.find().toArray(function(err, result) {

    if (err) { 
      console.log('Error:', err);
    } else {

      res.render('blogEntry', {
        title: 'Blog Entry',
        session: req.session,
        blog: result
      });

      db.close();
    }

  });

} catch (Exception) {
  console.log('there was a problem when accessing collection');
}

【问题讨论】:

    标签: node.js mongodb express


    【解决方案1】:
    collection.find({ _id: "apple" }).toArray...
    

    该方法有两个参数:

    collection.find(query, projection) 
    

    如果你把它们留空,你会获取所有东西。

    这里是documentation

    【讨论】:

    • 你必须用你的id替换apple?
    • 嗯,是的,但它仍然没有过滤任何东西。我在其他一些帖子上看到了您的相同方法。出于某种原因,对象 ID 需要存在,否则它会以未定义的形式返回。
    【解决方案2】:

    这是我需要做的。

    var ObjectID = require('mongodb').ObjectID;
    
    collection.find({
      _id: ObjectID(blogId)
    }).toArray(function(err, result) {
      callback(result);
      db.close();
    });

    【讨论】:

    • 问题是它是一个必需的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多