-1L使用Sping Boot 对Mongodb中的字段值进行排序

nxowjjhe  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(192)

我在处理聚合管道中的基本连接时遇到了一个解决方案。
解决方案的代码片段:

public Document getMovie(String movieId) {
        if (!validIdValue(movieId)) {
            return null;
        }
        
        List<Bson> pipeline = new ArrayList<>();
        // match stage to find movie
        Bson match = Aggregates.match(Filters.eq("_id", new ObjectId(movieId)));
        pipeline.add(match);
        // TODO> Ticket: Get Comments - implement the lookup stage that allows the comments to
        // retrieved with Movies.
        pipeline.addAll(Arrays.asList(new Document("$lookup",
                new Document("from", "comments")
                        .append("let",
                                new Document("id", "$_id"))
                        .append("pipeline", Arrays.asList(new Document("$match",
                                        new Document("$expr",
                                                new Document("$eq", Arrays.asList("$movie_id", "$$id")))),
                                new Document("$sort",
                                        new Document("date", -1L))))
                        .append("as", "comments"))));
        
        Document movie = moviesCollection.aggregate(pipeline).first();
        
        return movie;
    }

我只是想知道-1L在这种情况下的用途是什么?因为测试已经通过,只有-1值。
我试着寻找它,但没有找到。
测试代码片段:

@SuppressWarnings("unchecked")
  @Test
  public void testGetMovieComments() {
    String movieId = "573a13b5f29313caabd42c2f";
    Document movieDocument = dao.getMovie(movieId);
    Assert.assertNotNull("Should not return null. Check getMovie()", movieDocument);

    List<Document> commentDocs = (List<Document>) movieDocument.get("comments");
    int expectedSize = 147;
    Assert.assertEquals(
        "Comments list size does not match expected", expectedSize, commentDocs.size());

    String expectedName = "Arya Stark";
    Assert.assertEquals(
        "Expected `name` field does match: check your " + "getMovie() comments sort order.",
        expectedName,
        commentDocs.get(1).getString("name"));
  }
  • 谢谢-谢谢
iibxawm4

iibxawm41#

这不就是一个简单的Java约定吗?

The L suffix tells the compiler that we have a long number literal.

Java byte, short, int and long types are used do represent fixed precision numbers.q This means that they can represent a limited amount of integers

这个后缀告诉我们,类型可以表示的是什么。
由于这些值最终会被整理成一个对Mongo的请求,我不认为这在这个示例中会有什么不同,因为发送给Mongo的类型示例不会有什么不同。我相信你可以在MongoDriver代码中很容易地看到这一点。我可以链接它。

相关问题