例如,我有两个系列:
第一个被命名为“Songs ”,该集合中的文档存储关于宋立科< code >标题 、< code >持续时间 、< code >发行日期和其他的所有元数据。除此之外,还有< code>artist和< code>producer字段,这些字段存储来自“Stars”集合的相关文档的id。
“歌曲”收藏中的文档示例:
{
id: SONG_ID
title: TITLE,
duration: DURATION,
release_date: ISO_DATE,
...
artist: STAR_ID
producer: STAR_ID
}
你猜的第二个是“星星”集合,这个集合中的文档存储了关于星星的信息,比如全名
、date_of_birth
和其他。
“星星”收藏中的文档示例:
{
id: STAR_ID
fullname: FULLNAME,
date_of_birth: DATE_OF_BIRTH
...
}
假设我想找到(1个条件)标题中有“爱”一词的歌曲,(2个条件)2017年发行,(3个条件)来自蕾哈娜或扎拉·拉尔森等艺术家。请注意,我的问题不同于简单的左外联接。请注意,在这个查询中,第三个条件与存储在第二个集合“Stars”中的信息有关,因此我不想仅仅用“Stars”(星星)集合中的信息污染艺术家和制作人领域,而且我想选择像蕾哈娜或扎拉·拉尔森这样的明星歌曲。
最好和最快的方法是什么?
感谢您的帮助!
你可以使用下面的聚合查询。
release_date
上的$match
,以及标题上的
$regex
匹配。
$lookup
查找艺术家
集合,然后在全名
上查找$匹配
以获取输入值。
db.Songs.aggregate([
{ "$match":{ "release_date": { "$gte": ISODate("2017-01-01T00:00:00.000Z"), "$lt": ISODate("2018-01-01T00:00:00.000Z")}, title: { $regex: /love$/ } } },
{ "$lookup": {
"from" : "Stars",
"localField" : "artist",
"foreignField" : "_id",
"as" : "star"
}
},
{ "$match" : { "star.fullname" : { "$in": [ "Rihanna", "Zara Larsson" ] } } }
])
正则表达式在锚定时可以使用索引。与文本搜索相比。
我有一个名为“Prices”的MongoDB集合,我试图查询“startDate”和“endDate”之间的价格。 该集合每10秒存储一次价格,但是当查询此集合以绘制图形时,每1-2分钟的价格才是真正重要的。 我尝试用两种不同的方式编写此查询: 方法1:使用{$gte:startDate,$lte:endDate} 此方法引发以下错误: 如果删除排序('-timestamp')行,并再次运行此查询
我是MongoDB的新手,我正在创建一个数据库来记录学生和学生在大学学习的课程。有三个集合,称为学生,科目和讲师。学生集合包含studentId、姓名、dob、email、Year。主题集合包含subjectId、subjectName、credits;讲师集合包含lecturerId、lectureName、speciliazation、contactNo、email。学生和学生收藏之间的关系是
很抱歉打扰你,但我无法找到一个有效的解决我的问题的方法。我想做一个MongoDB查询,让我得到与SQL查询相同的结果:
2-查询id为1的人的所有地址,2我想: 好的方法是什么?
我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。
我正在使用reactive mongodb开发简单的spring webflux演示应用程序,我想按姓名读取员工的所有数据,但不包括姓名字段“joe”、“Sara”、“joe”、“Sara”,我有如下代码: //仓库接口 //服务类