小编gen*_*ane的帖子

使用C#驱动程序分页MongoDB查询

我使用的是用于C#的2.2版MongoDB驱动程序.我想对查询进行分页:对查询的响应必须包含当前页面的项目以及与查询匹配的项目总数.

我想做一个查询.使用mongo shell我可以意识到:

var c = db.mycol.find({....}).skip(0).limit(10)
var total = c.count();
while (c.hasNext()) {
   print(tojson(c.next()));
}
Run Code Online (Sandbox Code Playgroud)

但是使用C#驱动程序,我不知道如何只使用一个查询.

var find = collection
  .Find(x => x.Valid == true)
  .Skip(0)
  .Limit(10);

var cursor = await find.ToCursorAsync(cancellationToken);
// How to get the count? There is no method in the IAsyncCursor interface.
Run Code Online (Sandbox Code Playgroud)

可能吗 ?一些想法?

c# mongodb mongodb-csharp-2.0 mongodb-.net-driver

8
推荐指数
1
解决办法
8075
查看次数

angular2中的Bootstrap事件

我编写了一个简单的angular 2组件,其中显示了一个Bootstrap选项卡。我想处理引导事件show.bs.tab。我试图将事件处理程序放在ul和所有标签上,但没有收到任何事件。

@Component({
    selector: 'tabpanel',
    template: `
        <div>
        <ul class="nav nav-tabs" role="tablist" (show.bs.tab)="onTab()">
            <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab" (show.bs.tab)="onTab()">Home</a></li>
            <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab" (show.bs.tab)="onTab()">Profile</a></li>
            <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab" (show.bs.tab)="onTab()">Messages</a></li>
            <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab" (show.bs.tab)="onTab()">Settings</a></li>
        </ul>
        <div class="tab-content">
            <div role="tabpanel" class="tab-pane active" id="home">1...</div>
            <div role="tabpanel" class="tab-pane" id="profile">2...</div>
            <div role="tabpanel" class="tab-pane" id="messages">3...</div>
            <div role="tabpanel" class="tab-pane" id="settings">4...</div>
        </div>
        </div>`,
    directives: [CORE_DIRECTIVES]
})
class TabbedPanel {
    onTab() {
        console.info('tab !!');
    }
}
Run Code Online (Sandbox Code Playgroud)

如何接收引导事件?对于诸如fullcalendar,暴露各种事件的openlayers之类的库的事件,我可能会有相同的问题。我使用角度2 alpha 44。

angular

3
推荐指数
1
解决办法
6199
查看次数

如何将字符串列表序列化为 objectid 列表

我有一个用这样的类映射的用户集合:

class User
{
  public String Id { get; set; }
  ...
}
Run Code Online (Sandbox Code Playgroud)

Id 属性是文档的标识符;它在 C# 中由一个字符串表示,但在 mongo 中是一个 objectid。以下映射允许确保这一点:

BsonClassMap.RegisterClassMap<User>(cm =>
{
  cm.MapIdProperty(x => x.Id)
    .SetSerializer(new StringSerializer(BsonType.ObjectId))
    .SetIdGenerator(StringObjectIdGenerator.Instance);
  ...
}
Run Code Online (Sandbox Code Playgroud)

我有另一个名为 Book 的集合;每本书都可以由一个或多个作者撰写。

class Book
{
  public String Id { get; set; }
  public String Title { get; set; }
  public IList<String> Authors { get; set; }
  ...
}
Run Code Online (Sandbox Code Playgroud)

Id 属性与 User 集合的相同。我希望每个作者都作为 objectid 而不是 string 存储在 mongo 中:但我不知道该怎么做:我不想定义 autors 属性的序列化程序,而是定义该属性的每个元素的序列化程序。

BsonClassMap.RegisterClassMap<Book>(cm =>
{
  cm.MapIdProperty(x => x.Id) …
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-.net-driver

3
推荐指数
1
解决办法
1558
查看次数

在Kafka流中加入外键

可以说,我有三个Kafka主题,其中填充了表示在不同聚合中发生的业务事件的事件(事件源应用程序)。这些事件允许构建具有以下属性的聚合:

  • 用户:usedId,名称
  • 应用程序的模块:moduleId,名称
  • 用户授予的应用程序模块:grantId,userId,moduleId,范围

现在,我想创建一个包含用户和产品名称(而不是ID)的所有赠款的流。我想这样做:

  1. 通过按userId将事件分组为用户创建KTable。KTable以userId为键。没关系。
  2. 通过按productId将事件分组为产品创建KTable。KTable以productId为键。没关系。
  3. 从Grants流创建流,并加入两个KTable。不好 问题是联接似乎只能在主键上进行。但是流的密钥是Grant的技术标识符,而user和product表的密钥不是(它们与Grant无关)。

那么如何进行呢?

apache-kafka apache-kafka-streams

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

Lambda表达式中的赋值

我想定义一些lambda表达式来表示类实例属性的更新。

我试着写如下:

Expression<Action<User>> update = user => user.Name = "Joe Foo";
Run Code Online (Sandbox Code Playgroud)

但是我有一个编译错误:

错误CS0832表达式树可能不包含赋值运算符。

如何用lambda表示此更新。

编辑

我的目标是使业务服务将更新发送到通用存储库。该存储库可以分析lambda的表达式以构建查询以发送到数据库引擎。

商业服务的示例可以是:

Expression<Action<User>> update = user => user.Name = "Joe Foo";
Run Code Online (Sandbox Code Playgroud)

c#

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