我有一个用户和post文档,如下所示:
user: {
"name": "Test",
interests: [
"Sports",
"Movies",
"Running"
]
}
post: {
"title": "testing",
"author": ObjectId(32432141234321411) // random hash
}
我想查询帖子,并获取所有作者有“运动”、“跑步”作为兴趣的帖子,这将是一个分页查询。
我如何在猫鼬中做到这一点?如果不是,我应该使用什么替代方案?
我使用了下面的方法,虽然使用异步/等待方法给出答案,但实际上我使用的是promise。
const fetchPosts = async (req, res) => {
//First find users having those interests.
const users = await User.find({
interests: {
"$in": ["Sports", "Movies"]
}
})
.select('_id')
.exec();
// map over array of objects to get array of ids
const userIds = users.map(u => u._id);
// Then run an in filter on Post collection against author and
//userIds
const posts = await Post.find({
author: {
"$in": [userIds]
}
})
.limit(15)
.skip(0)
.exec();
}
使用限制和跳过进行分页
var limit = 5;
var page = 0; // 1,2,3,4
return Model.find({
/* Some query */
})
.limit(limit)
.skip(limit * page)
.exec().then((data) => {
console.log(data);
});
试试这个
const findUser = (interests) => {
return User.find({
interests: {
$in: interests
}
}).exec();
};
const findPost = (query, page = 0) => {
const limit = 5;
return Model.find(query)
.limit(limit)
.skip(limit * page)
.exec();
};
var execute = async () => {
const users = await findUser(["Sports", "Movies", ]);
users.forEach(user => {
user.post = await findPost({
"post.author": user._id
});
});
return users;
}
问题内容: 我在子文档的Mongoose中尝试执行findOne查询,但运气不佳… 我的架构如下所示: 我只需要从我使用此查询的文档中查找用户的电子邮件 任何帮助,将不胜感激! 问题答案: 您缺少对象的级别,因此您的代码需要更改为以下内容:
我刚刚被这个问题缠住了。我有两个猫鼬模式: 问题是,如何从每个父文档中获取所有子文档(在这种情况下,对象)?假设我有一些数据: 我想在一个查询中检索所有18岁以上的儿童。有可能吗?每一个回答都将不胜感激,谢谢!
问题内容: 将嵌入式阵列保存到Mongoose模型时遇到麻烦。 请参阅底部的编辑。 我有一种使用Mongoose在Express中创建BlogPost并将其存储在mongo中的数据的表单。我可以创建和查看新的博客文章,但是我只是在BlogPost模型中添加了嵌入式文档架构Feed,但无法获取Feed数组以将其从表单保存到模型中 码: BlogPosts.js web.js 翡翠形式 如果我填写此表
我知道在最新版本的Mongoose中,您可以将多个文档传递给create方法,在我的例子中,甚至可以传递一个文档数组。 我的问题是数组的大小是动态的,所以在回调中创建一个对象数组会很有帮助。 文档中没有,但这样做可能吗?
参考文档 Dockerfie 官方文档:https://docs.docker.com/engine/reference/builder/ Dockerfile 最佳实践文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ Docker 官方镜像 Dockerfile:https://github.
问题内容: 我的猫鼬模式之一是多对多关系: 如果我删除了一个组,是否仍然可以从所有用户的“组”数组中删除该组objectId? 问题答案: 您正在为此使用中间件。在中间件功能中,是否删除了组实例,您可以通过其方法访问其他模型。因此,您可以执行以下操作: 或者,如果您要支持组实例中的字段可能不完整的情况,则可以执行以下操作: 但正如WiredPrairie所指出的那样,对于此选项,您需要一个索引才能