5

特定のコレクション内のドキュメントの数を取得する必要があります:

コレクションに属する実際のドキュメントとペアになっているコレクションのカウントと名前を格納する既存のインデックス Raven/DocumentCollections があります。可能であれば、このインデックスからカウントを取得したいと思います。

Raven/DocumentCollections インデックスの Map-Reduce は次のとおりです。

from doc in docs
let Name = doc["@metadata"]["Raven-Entity-Name"]
where Name != null
select new { Name , Count = 1}

from result in results
group result by result.Name into g
select new { Name = g.Key, Count = g.Sum(x=>x.Count) }

ちなみに、私のDBには明らかに500個の奇妙なドキュメントがあり、そのうちの少なくとも50個のメタデータに「Raven-Entity-Name」が「 Posts var Count = DocumentSession.Query<Post>().Count();」として含まれているにもかかわらず、結果として常に0が返されます。この Count クエリが答えとして 0 を返し続ける理由がまったくわかりません - Raven ログは、Count が完了するとこれを示します

Request # 106: GET     -     0 ms - TestStore  - 200 - /indexes/dynamic/Posts?query=&start=0&pageSize=1&aggregation=None
4

2 に答える 2

10

まだ答えを探している人 (この質問は 2011 年に投稿されました) にとって、これを行う適切な方法は次のとおりです。

var numPosts = session.Query<Post>().Count();
于 2014-09-10T14:54:57.630 に答える
5

インデックスから結果を取得するには、次を使用できます。

session.Query<Collection>("Raven/DocumentCollections")
       .Where(x=>x.Name == "Posts")
       .FirstOrDefault();

それはあなたが望む結果を与えるでしょう。

于 2011-04-17T06:06:05.687 に答える