如何在MongoDB中使用字段开始字母(A到Z)获取随机文档?
我正在尝试与MongoDB合计。我的目标是我想获得随机名称 从给Z的字母A开始。结果,每个单词都以字母开头必须在响应中只有一次,但我不知道该怎么做。我将匹配条件与Regex 和样本条件以获取随机文档。
这是我的收藏;
[
{
"name": "ahmet"
},
{
"name": "barış"
},
{
"name": "ceyhun"
},
{
"name": "aslan"
},
{
"name": "deniz"
},
....
]
这是我的汇总功能;
db.collection.aggregate([
{
$match: {
name: {
$regex: "^a|^b|^c" // must be A to Z
}
}
},
{
"$sample": {
"size": 3 // Must be 26
}
}
])
我正在等待这样的回应。
[
{
"name": "ahmet"
},
{
"name": "barış"
},
{
"name": "ceyhun"
},
.... // other words starting with d, e , f but only one word for each letter
]
但是我得到了;
[
{
"_id": ObjectId("5a934e000102030405000001"),
"name": "barış"
},
{
"_id": ObjectId("5a934e000102030405000003"),
"name": "aslan"
},
{
"_id": ObjectId("5a934e000102030405000000"),
"name": "ahmet"
},
// name => aslan, name => ahmet (Two words starting with same letter)
]
我是MongoDB的新手,如果有人可以在我错了的地方帮助我,我会很感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以做类似的事情:
编辑带有后卫改进建议*(使用
$ subStrcp
,$ ifnull
):您可以在这个游乐场示例。
$ group
将保留每个firstL
的名称列表,$ arryelemat
带有$ rand
将保持只有一个随机项目。*感谢@mbay和@paul的改进建议
You can do something like this:
Edit with guard improvement suggestions* (using
$substrCP
,$ifNull
):As you can see on this playground example.
The
$group
will keep a list of names per eachfirstL
, the$arryElemAt
with the$rand
will keep only a random item.*Thanks to @Mbay and @Paul for the improvement suggestions