【问题标题】:VB find newest document in mongoVB在mongo中找到最新的文档
【发布时间】:2022-06-17 21:50:29
【问题描述】:

我可以找到收藏:

Imports MongoDB.Driver
..
Dim client As MongoClient
client = New MongoClient("mongodb+srv://...")
Dim db = client.GetDatabase("wetterstation")
Dim collection = db.GetCollection(Of BsonDocument)("akkus")

我用(复制自另一个问题)对其进行了测试

Dim q = New BsonDocument()
Dim f = Builders(Of BsonDocument).Projection.Include("_id")
Dim list = collection.Find(q).Project(f).ToList

然后我得到一个集合的 id 列表。
但是我怎样才能得到最新的文件呢?

【问题讨论】:

  • 我不熟悉 MongoDB.Driver 但查询将是 db.getSiblingDB("wetterstation").getCollection("akkus").find({}).sort({_id: -1}).limit(1)db.getSiblingDB("wetterstation").getCollection("akkus").findOne({}).sort({_id: -1})。注意,findOne 应该返回一个返回单个文档而不是 List(Of BsonDocument)
  • 感谢您的意见,我有语法问题。 Dim doc = collection.findOne({}).sort({_id: -1}) -> findone 不是“IMongoCollection(of BsonDocument) 的成员。_id 也只能作为字符串“_id”接受。你知道我能做什么吗?

标签: mongodb vb.net


【解决方案1】:

我没有测试过自己,但我认为你的 sn-p 的这种修改应该可以完成工作:

Dim collection As IMongoCollection(Of BsonDocument) = db.GetCollection(Of BsonDocument)("akkus")
    
Dim filter As FilterDefinition(Of BsonDocument) = New BsonDocument
Dim projection As ProjectionDefinition(Of BsonDocument) = Builders(Of BsonDocument).Projection.Include("_id")
Dim sorter As SortDefinition(Of BsonDocument) = Builders(Of BsonDocument).Sort.Descending("_id")

Dim list = collection.Find(filter).Project(projection).Sort(sorter).Limit(1).ToList

如果您按“_ids”降序排序,第一次出现也应该是最新的,如 cmets 中所述。然后你只需要第一次出现就可以了。

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2016-06-19
    • 2018-11-07
    相关资源
    最近更新 更多