相关疑难解决方法(0)

聚合框架中的$ skip和$ limit

当我阅读文档时,我发现了以下注释:

当$ sort紧接在管道中的$ limit之前时,$ sort操作仅保持前n个结果,其中n是指定的限制,而MongoDB只需要在内存中存储n个项目.当allowDiskUse为true且n个项超过聚合内存限制时,此优化仍适用.

如果我对此是正确的,它仅适用于我同时使用$ sort和$ limit的情况

db.coll.aggregate([
    ...,
    {$sort: ...},
    {$limit: limit},
    ...
]);
Run Code Online (Sandbox Code Playgroud)

但是,我想我们大部分时间都会这样做

db.coll.aggregate([
    ...,
    {$sort: ...},
    {$skip: skip},
    {$limit: limit},
    ...
]);
Run Code Online (Sandbox Code Playgroud)

问题1:如果我在这里使用$ skip,是否意味着上述规则不适用?

我问这个问题,因为理论上MongoDB仍然可以计算前n个记录,并通过只排序前n个记录来提高性能.我没有找到任何关于此的文件.如果规则不适用,

问题2:我是否需要将查询更改为以下内容以提高性能?

db.coll.aggregate([
    ...,
    {$sort: ...},
    {$limit: skip + limit},
    {$skip: skip},
    {$limit: limit},
    ...
]);
Run Code Online (Sandbox Code Playgroud)

编辑:我认为解释我的用例会使上面的问题更有意义.我正在使用MongoDB 2.6提供的文本搜索功能来查找产品.我担心如果用户输入一个非常常见的关键词,如"红色",将返回太多结果.因此,我正在寻找更好的方法来生成这个结果.

EDIT2:事实证明上面的最后一个代码等于

db.coll.aggregate([
    ...,
    {$sort: ...},
    {$limit: skip + limit},
    {$skip: skip},
    ...
]);
Run Code Online (Sandbox Code Playgroud)

因此,我总是可以使用此表单来应用前n个规则.

mongodb aggregation-framework

38
推荐指数
3
解决办法
3万
查看次数

MongoDB是关系型db + lucene的有效替代品吗?

在一个新项目中,我需要努力使用lucene来实现搜索器.这个搜索者将是该项目的一个非常重要(和大)的部分.用MongoDb替换Relational Database + Lucene是有效还是方便?

编辑:好的,我会澄清:我不是在询问风险,我可以在这个项目中支付这个价格.我的观点是:MongoDB是否面向这种事情?我可以制作一个完整的搜索引擎,具有与Lucene相同的性能吗?一位朋友指出MongoDB是另一种选择,但我不知道Lucene性能是否带有文档备选(然后,我也会在MongoDB中看到它),或者,另一方面,反向索引和优化是完全的独立的文件导向.

java lucene relational-database mongodb

34
推荐指数
2
解决办法
1万
查看次数

Lucene作为数据存储

是否可以将Lucene用作完整的数据存储(就像其他(mongo,couch)nosql变体一样).

我知道有一些限制,比如一个索引器的新更新文档不会在其他索引器中显示.因此我们需要重新启动索引器才能获得更新.

但我最近偶然发现了solr,似乎某些快照复制可以避免这些问题.

所以我认为我可以使用lucene作为数据存储,因为它还使用mongo和couch内部用于管理文档的相同类型的文档(基于JSON),并且其经过验证的索引算法可以超快速地获取记录.

但我很好奇有没有人尝过这个......?如果没有选择这种方法的原因是什么.

c# java lucene solr nosql

15
推荐指数
2
解决办法
1881
查看次数

使用MongoDB进行方面搜索

我正在考虑将MongoDB用于我的下一个项目.此应用程序的核心要求之一是提供方面搜索.有没有人尝试使用MongoDB实现方面搜索?

我有一个产品型号,具有各种属性,如大小,颜色,品牌等.在搜索产品时,此Rails应用程序应在侧栏上显示构面过滤器.Facet过滤器看起来像这样:

Size:
XXS (34)
XS (22)
S (23)
M (37)
L (19)
XL (29)

Color:
Black (32)
Blue (87)
Green (14)
Red (21)
White (43)

Brand:
Brand 1 (43)
Brand 2 (27)
Run Code Online (Sandbox Code Playgroud)

mongodb faceted-search

13
推荐指数
2
解决办法
1万
查看次数

MongoDB作为NoSQL数据库提供的优于ElasticSearch的优势

我是NoSql数据库的新手,但我真的很喜欢使用官方c#驱动程序的MongoDB.它目前是我正在编写的MVC应用程序的后端,简单性和速度使我的生活更轻松.

但是我已经在应用程序中找到了我需要非常棒的搜索.我以前使用过Solr,但对ElasticSearch很感兴趣.

据我所知,ElasticSearch(从一个非常肤浅的层面)可以完成MongoDB作为文档数据库的所有功能.

所以,如果我已经在使用NoSql数据库,并且我需要很好的搜索,那么Mongo中有什么意义吗?用例是什么?

Mongo更快吗?更容易使用?它是BSON数据类型和驱动程序吗?为什么不使用ElasticSearch作为我的数据库?

我目前正在使用AppHarbor并且喜欢"云".我讨厌IT,只想专注于我的应用程序.话虽如此,我目前看到的唯一优势是:

  • 已经有一些"云"MongoDB提供商.使用ElasticSearch我必须自己设置它.

.net c# cloud mongodb elasticsearch

12
推荐指数
1
解决办法
3502
查看次数

将mongodb与solr集成的动机是什么?

Mongodb是一个nosql db,除了全文搜索之外,可以在其上运行任何查询,因为它会降低整体性能.Solr是一个搜索引擎.当我们将这两者结合在一起时,那么我们在两个系统中都没有相同的数据吗?因此,如果我们已经要存储数据,为什么我们不直接将它存储在solr和lucene中.顺便说一下,我不确定solr只存储索引或与数据一起存储的时间.

lucene solr mongodb

7
推荐指数
1
解决办法
7090
查看次数