我想查找()集合中的任何文檔從skip值到條件的極限值,而不是所有文檔。例如,我想要獲取所有文檔直到我找到第五個黑頭髮的人。不只是五個黑頭髮的人。我怎樣才能做到這一點在MongoDB中? 謝謝!如何查找所有文檔,直到在mongodb中滿足條件
1
A
回答
0
獲取開始/結束ID,然後獲取該範圍的文檔。假設你想要第一個人和第五個人之間的連續黑頭髮的人:
var start = db.persons.find({"hair": "black"}).sort({_id:1}).limit(1).toArray()[0]._id;
var end = db.persons.find({"hair": "black"}).sort({_id:1}).skip(4).limit(1).toArray()[0]._id;
db.persons.find({"_id": {$gte: start, $lte: end }})
0
從你的斯巴達描述我不能告訴你的數據是什麼樣子,你想保留什麼信息,但肯定這是不可能的查找查詢。你看起來比較集中。 如果您的數據是這樣的:
/* 1 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e36"),
"color" : "black",
"name" : "Tim"
}
/* 2 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e38"),
"color" : "blond",
"name" : "Tom"
}
/* 3 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e3a"),
"color" : "black",
"name" : "Jack"
}
/* 4 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e3c"),
"color" : "black",
"name" : "Frank"
}
/* 5 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e3e"),
"color" : "black",
"name" : "Peter"
}
/* 6 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e40"),
"color" : "blond",
"name" : "Jon"
}
/* 7 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e42"),
"color" : "black",
"name" : "Apollo"
}
/* 8 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e44"),
"color" : "black",
"name" : "Zeus"
}
/* 9 */
{
"_id" : ObjectId("59ebda414d8a2fe38bec0e46"),
"color" : "blond",
"name" : "Daphne"
}
然後,你可以做這樣的事情:
db.getCollection('hair').aggregate([
{
$match: {
$or: [
{color: "black"},
{color: "blond"}
]
}
},
{
$group: {
_id: "$color", // group by color
sum: {$sum: 1} // sum the occurrences of each color
}
},
{
$project: {
_id: 1,
sum: {$sum: { $cond: [ {$and : [ { $eq: [ "$_id", "black"] },
{ $gt: [ "$sum", 5] }
] },
5,
"$sum" ] }}
}
}
])
因此,正如我說的,我不知道你的文檔的樣子,什麼樣的信息你想保留和不保存。如果你需要全部的話,你也可以刪除$match
管道,但是請考慮那些沒有使用索引的事實。
相關問題
- 1. MongoDB中找到的所有子文件滿足某種條件的文件
- 2. 如何提示,直到條件滿足?
- 3. 循環多個條件,直到滿足所有條件
- 4. MongoDB的:獲取所有嵌入文檔滿足查詢
- 5. 中的hasMany所有條件都滿足查找
- 6. jquery動畫,直到滿足條件
- 7. 改編ArrayList直到條件滿足(Java)
- 8. 選擇行,直到滿足條件
- 9. 重試循環,直到條件滿足
- 10. mvc2 asp.net找到條件滿足的所有記錄LINQ
- 11. 如何找到差異,直到條件被事後滿足R中
- 12. 在Python中計算滿足條件的所有條件
- 13. 貓鼬發現所有滿足條件
- 14. 查找列表中的前N個元素,直到滿足條件爲止
- 15. 部分滿足條件的MongoDB結果
- 16. 將所有路由重定向到一個url直到滿足條件
- 17. 如何重複ajax請求,直到RxJS Observable滿足條件?
- 18. 如何多次運行javascript函數,直到滿足if條件
- 19. 如何編寫一個循環,直到滿足條件爲止
- 20. 滿足條件
- 21. 獲取行直到在MySQL中滿足特定條件爲止
- 22. 得到滿足的條件
- 23. JS - 有功能重複,直到條件滿足
- 24. 電力查詢:如果條件滿足,查找最短日期
- 25. 查找所有填滿零的文件
- 26. 查找滿足條件X的第一個元素,在Seq中
- 27. 有沒有辦法留在協同程序中直到滿足條件?
- 28. 何種條件滿足SQL查詢
- 29. 如何獲得滿足條件的所有組合
- 30. 如何替換滿足條件的數組的所有元素?
所以你去什麼5,10,15,20,25 ...等,你想檢查是否在第5,10 ,15號......等文件的人有黑頭髮? –
不,我只想得到所有人,直到我得到第五個黑髮人。因此,我的新系列中將會有許多非黑髮人士加上五位黑髮人士。 –
只需迭代遊標,直到找到所需的數字。這是一個簡單的循環,當匹配數等於查找時,你簡單地「斷開」。 –