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 回答