0

Ravenクエリで子コレクションのカウントの合計を実行しようとしています。カウント0を返します。オブジェクトで同じLINQを直接使用すると、カウント2で機能します。

このクエリは、Ravenの自動インデックス作成で可能ですか?map-reduceインデックスを作成する必要がある場合、誰かがそれを手伝ってくれますか?

        [TestMethod]
        public void CalculateUserClickCount()
        {
            var db = new EmbeddableDocumentStore { RunInMemory = true };
            db.Initialize();
            using (var session = db.OpenSession())
            {
                var user = new User();
                var product = new Product();
                product.Clicks.Add(new Click());
                product.Clicks.Add(new Click());
                user.Storefront.EndoProducts.Add(product);
                session.Store(user);
                session.SaveChanges();

                var users = session.Query<User>()
                    .Customize(t => t.WaitForNonStaleResults())
                    .Select(t => new
                    {
                        StoreFrontId = t.Storefront.StorefrontID,
                        itemCount = t.Storefront.EndoProducts.Count,
                        updateDate = t.Storefront.LastUpdateDate,
                        clickCount = t.Storefront.EndoProducts.Sum(r => r.Clicks.Count), // this is improperly set to 0
                        TotalAffiliateRevenue = t.Storefront.SaleReports.Sum(r => r.TotalAffiliateEarnings) // this works
                    })
                    .ToList();

                int clickCount = user.Storefront.EndoProducts.Sum(t => t.Clicks.Count); // this is properly set to 2

                Assert.AreEqual(2, users[0].clickCount);
            }
        }
4

1 に答える 1

0

常に単一のドキュメントでのみ操作しているため、これには map/reduce は必要ありません。あなたが必要とするのは、おそらくこれを行うために結果を変換することです。

于 2013-02-14T15:31:10.717 に答える