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
。