Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在猫鼬中添加条件?_Node.js_Mongodb - Fatal编程技术网

Node.js 如何在猫鼬中添加条件?

Node.js 如何在猫鼬中添加条件?,node.js,mongodb,Node.js,Mongodb,我需要一个mongoose查询,以便在或条件中仅选择一条记录。有很多博客。其中一些是英语或法语。某些博客是重复的,就像它们有相同的内容,但语言不同。但它们有相同的“群组id” 若我根据一些标准过滤博客,比如“类别”,那个么只有带有“用户语言”的博客才会显示。但如果没有,则显示另一种语言。如何为此生成mongoose查询 db.find($and:[{category:'Health'},{$or: [{language: 'en'},{language:'fr'}]}]) 但它给出了2条记录,

我需要一个mongoose查询,以便在或条件中仅选择一条记录。有很多博客。其中一些是英语或法语。某些博客是重复的,就像它们有相同的内容,但语言不同。但它们有相同的“群组id”

若我根据一些标准过滤博客,比如“类别”,那个么只有带有“用户语言”的博客才会显示。但如果没有,则显示另一种语言。如何为此生成mongoose查询

db.find($and:[{category:'Health'},{$or: [{language: 'en'},{language:'fr'}]}])
但它给出了2条记录,如果“en”和“fr”都存在,我只需要“en”或“fr”。如何在一个查询中实现这一点

这些是一些样本文件

"{_id: '1', category_id: 'xyz', language:'en', group_id: 'aaa'} ", 
"{_id: '2', category_id: 'xyz', language:'fr', group_id: 'aaa'}",
"{_id: '3', category_id: 'xyz' language: 'en', group_id: 'bbb'}",
"{_id: '4', category_id: 'xyz', language: 'fr', group_id: 'ccc'}"
我请求类别_id:'xyz'和语言:'en'。所以结果应该是,

"{_id: '1', category_id: 'xyz', language:'en', group_id: 'aaa'} ", 
"{_id: '3', category_id: 'xyz' language: 'en', group_id: 'bbb'}",
"{_id: '4', category_id: 'xyz', language: 'fr', group_id: 'ccc'}"
我有一个不同的组id=['aaa','bbb','ccc']的数组。所以情况是这样的,

group_id: $in:group_id $$ language  should be 'en' if not 'fr'

使用findOne查询,它只提供一个结果,如下所示

db.findOne($and:[{category:'Health'},{$or: [{language: 'en'},{language:'fr'}]}]);

如果我读对了,那么需要使用
.aggregate()
将“相同”的文章“分组”在一起,将每种语言的内容推送到一个数组中。然后需要
$filter
所选语言或默认语言的数组内容。因此,这不仅仅是一个“查询”,而是服务器上的“操作”。我们需要文档样本来引导您浏览。您不需要查询中的第一个“和”,因为查询对象的每一个第一级属性都已通过mongo Engine的“和”链接。我已经添加了一些数据,请检查。但我在语言方面有优先权,如果用户语言为英语,请选择“en”,假设不存在,请选择“fr”。然后,我建议您围绕返回两条记录的查询编写一个简单的逻辑。