标签: mongodb-.net-driver

MongoDB:获取所有数据库的列表?

如何使用Mongo C#Driver列出连接的所有数据库?

mongodb mongodb-.net-driver

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

MongoDB C#Driver多字段查询

使用MongoDB C#驱动程序如何在查询中包含多个字段(使用vb.net)

我知道怎么办(for name1=value1)

 Dim qry = Query.EQ("name1","value1")
Run Code Online (Sandbox Code Playgroud)

我怎么能修改此查询,以便我可以把它找到的所有文件,其中 name1=value1name2=value2

( 相近 )

db.collection.find({"name1":"value1","name2":"value2"})
Run Code Online (Sandbox Code Playgroud)

c# vb.net mongodb mongodb-.net-driver

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

如何删除mongodb中的多个ID?

{ "_id" : ObjectId("51ee3966e4b056fe8f074f48"), "userid" : "66", "clientid" : "88", "deviceid" : "22", "timestamp" : "1374214822000"}
{ "_id" : ObjectId("51ee507ae4b056fe8f074f4a"), "userid" : "66", "clientid" : "88", "deviceid" : "22", "timestamp" : "1374214822000"}
{ "_id" : ObjectId("51ee51fee4b056fe8f074f4b"), "userid" : "66", "clientid" : "88", "deviceid" : "22", "timestamp" : "1374214822000"}
Run Code Online (Sandbox Code Playgroud)

如何删除mongodb中的多个ID?

mongodb mongodb-.net-driver

12
推荐指数
2
解决办法
6459
查看次数

MongoDB中的集合ID长度

我是mongodb和堆栈溢出的新手.

我想知道为什么mongodb集合ID是24个十六进制字符?这有什么重要意义?

mongodb mongoid mongodb-query mongodb-.net-driver

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

使用C#聚合$ lookup

我有以下MongoDb查询工作:

db.Entity.aggregate(
    [
        {
            "$match":{"Id": "12345"}
        },
        {
            "$lookup": {
                "from": "OtherCollection",
                "localField": "otherCollectionId",
                "foreignField": "Id",
                "as": "ent"
            }
        },
        { 
            "$project": { 
                "Name": 1,
                "Date": 1,
                "OtherObject": { "$arrayElemAt": [ "$ent", 0 ] } 
            }
        },
        { 
            "$sort": { 
                "OtherObject.Profile.Name": 1
            } 
        }
    ]
)
Run Code Online (Sandbox Code Playgroud)

这将检索与另一个集合中的匹配对象连接的对象列表.

有没有人知道如何使用LINQ或使用这个确切的字符串在C#中使用它?

我尝试使用以下代码,但它似乎无法找到类型QueryDocumentMongoCursor- 我认为它们已被弃用?

BsonDocument document = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{ name : value }");
QueryDocument queryDoc = new QueryDocument(document);
MongoCursor toReturn = _connectionCollection.Find(queryDoc);
Run Code Online (Sandbox Code Playgroud)

c# mongodb aggregation-framework mongodb-.net-driver

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

MongoDB对层次类型查询的适用性

我有一个特定的数据操作要求,我已经解决了如何在SQL Server和PostgreSQL中做.但是,我对速度不太满意,所以我正在调查MongoDB.

描述查询的最佳方法如下.描绘美国的分层数据:国家,州,县,市.假设一个特定的供应商可以为整个加州服务.另一个可能只服务于洛杉矶.可能有数十万个供应商,他们都可以从这个层次结构中的某些点进行服务.我并没有把它与Geo混淆 - 我用它来说明需要.

使用递归查询,可以很容易地获得可以为特定用户提供服务的所有供应商的列表.如果他是在说帕萨迪纳,美国加利福尼亚州洛杉矶,我们会走到层次得到应用的ID,然后查询回落,找到供应商.

我知道这可以优化.同样,这只是一个简单的查询示例.

我知道MongoDB是一个文档存储.这非常适合我的其他需求.问题是它对我描述的查询类型有多适合?(我知道它没有连接 - 这些是模拟的).

我知道这是一个"一段字符串多长时间"的问题.我只是想知道是否有任何人有使用MongoDB做这种事情的经验.从0到测试可能需要一段时间,如果MongoDB不适合这个,我希望节省时间.

当地的电影商店"A"可以在斯普林菲尔德供应Blu-Rays.具有全州分布的连锁店"B"可以向所有IL提供Blu-Rays.按需下载商店"C"可以供应给所有美国用户.

如果我们想要获得伊利诺斯州斯普林菲尔德的所有适用电影供应商,那么答案将是[A,B,C].

换句话说,在层次结构上有许多不同级别的供应商.

hierarchical-data mongodb mongodb-.net-driver

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

我什么时候应该打开和关闭MongoDB连接?

我对MongoDB和NoSQL很新,我刚刚开始使用MongoDB/Norm/ASP.NET MVC 3构建一个站点.

我想知道我应该如何确定与Mongo数据库的连接.

现在我有一个Basecontroller,它实现了MongoSession和onActionExecuted我处理它所以我所有的派生控制器都可以访问我的MongoSession.MongoSession类在其构造函数中打开一个连接,并将它放在Dispose()上,就像它今天的工作方式一样.

private IMongo _mongo;

public MongoSession()
{         
    _mongo = Mongo.Create("connString");      
} 

public void Dispose()
{
    _mongo.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

如果我在控制器中做其他事情,我有点担心它可能会持续打开太长时间.

这种方法是否应该不会冒太多连接的风险,或者我应该做更像下面的示例方法?

   public void Add<T>(T item) where T : class, new()
   {
       using (var mongo = Mongo.Create("connString"))
       {
         mongo.GetCollection<T>().Insert(item); 
       }
   }
Run Code Online (Sandbox Code Playgroud)

另一个跟进问题是:

通过Norm"昂贵"操作打开和关闭MongoDB连接?

database-connection scoping mongodb norm mongodb-.net-driver

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

在MongoDB中将Guid存储为String有什么缺点?

应用程序在Mongo中保留Guid字段,最终存储为BinData:

"_id" : new BinData(3, "WBAc3FDBDU+Zh/cBQFPc3Q==")
Run Code Online (Sandbox Code Playgroud)

在这种情况下的优点是紧凑性,当需要对应用程序进行故障排除时会出现缺点.Guids通过URL传递,并且在转到Mongo控制台时不断将它们转换为BinData有点痛苦.

除了增加尺寸外,将Guid存储为字符串有什么缺点?一个优点是易于故障排除:

"_id" : "3c901cac-5b90-4a09-896c-00e4779a9199"
Run Code Online (Sandbox Code Playgroud)

这是C#中持久化实体的原型:

class Thing
{
    [BsonIgnore]
    public Guid Id { get; set; }

    [BsonId]
    public string DontUseInAppMongoId
    {
        get { return Id.ToString(); }
        set { Id = Guid.Parse(value); }
    }
}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-.net-driver

11
推荐指数
2
解决办法
6561
查看次数

Mongo抛出"元素名称'名称'无效'例外

我正在更新一个简单的字段.

var filterDocument = new BsonDocument { { "name", "alice" } };

var newDocument = new BsonDocument { { "name", "Alice" } };

collection.UpdateOne(filterDocument, newDocument);
Run Code Online (Sandbox Code Playgroud)

但是当我到达更新语句时,我得到一个例外 {"Element name 'name' is not valid'."}

这个元素名称有什么问题?

更新

重写它:

var filterDocument = new BsonDocument { { "x", "alice" } };

var newDocument = new BsonDocument { { "y", "Alice" } };

collection.UpdateOne(filterDocument, newDocument);
Run Code Online (Sandbox Code Playgroud)

抛出异常 {"Element name 'y' is not valid'."}

此外,UpdateOne()UpdateMany()没有任何区别.

另外,从外壳来看它很好.

> db.crud.update({name:'alice'},{name:'Alice'})
WriteResult({ "nMatched" : 1, "nUpserted" : …
Run Code Online (Sandbox Code Playgroud)

.net c# mongodb mongodb-.net-driver

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

在MongoDB中计数不正确

技术:

  • MongoDB 3.0.8(MMAPv1),通过mLab托管在AWS上的非分片专用集群(主要,辅助和仲裁),3.7GB RAM
  • MongoDB 2.3的C#驱动程序
  • 连接字符串:

mongodb的:// USER:PASS@MYMONGO1.com:1234,MYMONGO2.com:1234/DB_NAME replicaSet = REPLICA_SET_NAME

假设

  • 我有一个名为Package的字段集合产品.
  • 有索引:"套餐":1
  • 永远不会删除此集合中的对象.
  • 字段包永远不会更新.
  • 不时插入新对象.

每天一次我记录这个集合的特定计数(每次都有相同的参数):

db.Products({"Package": "Box"}).count()
// actual code running in C#:
productsCollection.Find(p => p.Package == "Box").Count()
Run Code Online (Sandbox Code Playgroud)

我希望每天的结果都相同或更高. 但有时我会得到一个较小的价值.第二天它又变得正确了.它在两种不同的环境中重现.

例:

  • 第1天:4,563,135
  • 第2天:4,563,135
  • 第3天:4,563,124(比预期的少11个)
  • 第4天:4,563,135

我试图通过C#和Mongo直接手动重现它,但是失败了(值总是正确的).

这是怎么回事?

c# linq mongodb mongodb-.net-driver

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