Node.js 通过Mongoose按数组值查询文档

Node.js 通过Mongoose按数组值查询文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在尝试获取关键字属性包含的所有帖子req.query.keyword 以下是我的尝试: router.get("/posts", (req, res) => { Post.find({"keywords" : { $in : [ req.query.keyword] } } ) .populate("author") .populate("comments") .exec((err, posts) => { i

我正在尝试获取关键字属性包含的所有帖子
req.query.keyword

以下是我的尝试:

    router.get("/posts", (req, res) => {
    Post.find({"keywords" : { $in : [ req.query.keyword]  } } )
      .populate("author")
      .populate("comments")
      .exec((err, posts) => {
        if (err) throw err;
        else {
          res.json(posts);
        }
      });
});
虽然有多个元素,但它只返回一个元素。另外,如何查询是否有更多的关键字

我正在和邮递员一起发送请求:
http://localhost:3000/api/posts/?keyword=database

以下是我得到的:

[
    {
        "keywords": [
            "database",
            " mysql"
        ],
        "_id": "5b131352f495ad336408041e",
        "title": "MySQL",
        "body": "...
我应该多拿一份文件

"keywords": [ "database",
              " mongodb" ] ...

显示您希望匹配的文档。你也用了错误的方法,因为
$in
用于“参数列表”,而不是你认为的“与列表字段匹配”。MongoDB不关心
“keywords”:req.query.keyword
是否在查看单个字段或数组。它只匹配任何匹配的东西。你应该得到它吗?给我们看三份文件。两个关键字匹配,一个不匹配。简而言之,您不会得到两个具有相同匹配关键字的文档。因为这适用于世界其他地方,正如我已经演示过的,你甚至不需要为一个“单一”术语使用
$in