标签: mongodb-.net-driver

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

有没有办法记录MongoDB C#驱动程序生成的实际查询并发送到mongodb?与SQL Server一样,您可以使用SQL Profiler向您显示所有传入的查询.

profiling mongodb mongodb-.net-driver

14
推荐指数
2
解决办法
4521
查看次数

如何更新mongodb文档以向阵列添加新项?

我无法找出插入子数组...

  • _ID
  • MYARRAY
  • - 项目
  • ---- ArrayItemId
  • - - 名称

我想将项目插入MyArray ...

我的更新文件应该如何?

MyCollection.Update( 
 new QueryDocument { { "_id", MyObject.Id } },
 new UpdateDocument { { "$set", new BsonDocument { { "MyArray", 
       new BsonArray { new BsonDocument {{ "ArrayItemId", myArrayField.Id }},
                       new BsonDocument {{ "Name", myArrayField.Name }} }}}}}, 
 UpdateFlags.None);
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-.net-driver

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

如何在MongoDb中创建嵌套查询,就像嵌套的Sql select查询一样

我想在MongoDb中进行有效查询,以查找在用户组中列出其用户ID的所有用户.理想情况下,我想将此作为对Mongodb的单个请求.我想要的对应于SQL中的嵌套选择.我在mongo shell中试过这个:

db.user.save({_id:"u1", Name:"u1 name"});
db.user.save({_id:"u2", Name:"u1 name"});
db.user.save({_id:"u3", Name:"u3 name"});
db.usergroup.save({_id:"g1", Users: ["u2","u3"]});
Run Code Online (Sandbox Code Playgroud)

现在这里是我想做的选择,但没有硬编码["u2","u3"]数组:

db.user.find({_id:{$in:["u2","u3"]}}).forEach(printjson);
Run Code Online (Sandbox Code Playgroud)

这很好,并返回u2和u3的用户对象.

现在的问题是如何使用查询提取$ in运算符中的userid数组,以便可以使用单个请求创建整个查询.

像这样的"嵌套查询"不起作用:

db.user.find({_id:{$in:db.usergroup.find({_id:"g1"},{_id:0,Users:1})}}).forEach(printjson);
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:Tue Mar 27 06:17:41未捕获异常:错误:{"$ err":"无效查询","代码":12580}无法加载:mongoNestedSelect.js

1)这可能在mongodb中如何?

2)如何使用官方c#驱动程序执行此操作?

mongodb mongodb-.net-driver

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

MongoDB .Net驱动2.0拉(删除元素)

你能用2.0驱动程序帮助我正确运行"拉(删除)".

我有一个这样的集合,我想删除第一个跟随者字段命名为fethiye的追随者.

{
  "_id": ObjectId("554e05dfc90d3d4dfcaa2aea"),
  "username": "bodrum",
  "followerList": [
    {
      "_id": ObjectId("554e0625a51586362c33c6df"),
      "follower": "fethiye",
      "avatar": "fethiye.png"
    },
    {
      "_id": ObjectId("554e0625a51586362c33c6df"),
      "follower": "izmir",
      "avatar": "izmir.png"
    }
  ]
} 
Run Code Online (Sandbox Code Playgroud)

我该如何修复此查询?

var filter = new BsonDocument("username", "bodrum");
var update = Builders<Person>.Update.Pull("followerList:follower", "fethiye");
Person pr = collection.FindOneAndUpdateAsync(filter, update).Result;
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# mongodb mongodb-.net-driver

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

收到“未配置为此 ObjectSerializer 实例的允许类型”序列化错误

我正在从事一个集成项目。将实体插入 mongodb 时出现错误。

错误消息返回以下字符串:

MongoDB.Bson.BsonSerializationException:“序列化类 Order 的 OrderData 属性时发生错误:类型 MarketplaceOrder 未配置为此 ObjectSerializer 实例的允许类型。'

之前几步,我从任何 api 资源获取数据并将数据转换为我的通用对象,<T>如下行所示。

var data = (JArray)returnDataFromNetwork.Data;
var order = data.ToObject<T>()
Run Code Online (Sandbox Code Playgroud)

将实体插入 mongodb 时出现错误

_orderRepository.InsertAsync(new Order
  {
    OrderData = order,
  });
Run Code Online (Sandbox Code Playgroud)
public class Order
{
  public object OrderData { get; set; }
}

public class MarketplaceOrder
{
  [JsonProperty("marketplace")]
  public string Marketplace { get; set; }

  [JsonProperty("account_id")]
  public int AccountId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

感谢您的支持,

我试图解释的所有事情都是关于“hangfire”(后台服务)项目的。首先,我在服务器控制台上收到此错误消息。然后我尝试在本地调试以了解问题所在。我无法理解错误消息的详细信息。

.net c# mongodb mongodb-.net-driver

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

在更新文档中的数组时,如何在MongoDB和C#中使用$ push update修饰符

我在mongo shell中运行以下代码:

db.unicorns.insert({name:  'Dunx',  loves:  ['grape',  'watermelon']});
Run Code Online (Sandbox Code Playgroud)

现在我在MongoDB集合中有这样的东西:

{name: 'Dunx', loves: ['grape', 'watermelon']}
Run Code Online (Sandbox Code Playgroud)

你可以看到loves一个数组.

如何使用官方C#驱动程序编写C#代码,执行以下操作:

db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}})
Run Code Online (Sandbox Code Playgroud)

上面的代码在mongo shell中运行得很好.

c# mongodb mongodb-.net-driver

13
推荐指数
2
解决办法
9181
查看次数

MongoDB C#Driver中的BsonValue和自定义类

我正在尝试使用$pushc#驱动程序在mongodb中的更新查询中使用.

Update.Push(...)方法需要一个字符串名称(这很好),并且BsonValue需要"推送".这是我遇到问题的地方.我正在尝试将非简单类型推送到字段的数组.

例如: { $push : { "arrayfield" : { "a" : 7, "b" : 12 } } }

这在Mongo控制台中运行良好,但我无法弄清楚如何将我的对象变成BsonValue.我试过BsonValue.Create(myObjectInstance)但是这给了我一个错误,说.NET类型无法映射到BsonValue.

我错过了一些简单的事吗?

c# mongodb mongodb-.net-driver

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

使用mongo C#驱动程序,如何序列化自定义对象数组以便存储它?

我有一个包含一系列文档的产品文档.例如

{
 id: 1,
 name: "J-E-L-L-O",
 store:[{id: 1,
    name: "Store X"},
    {id: 2,
    name: "Store Y"}]
}
Run Code Online (Sandbox Code Playgroud)

我想将"Store Y"的名称更改为"Store Z",例如.当时,我不知道对象的索引.所以,我拉出整个数组,找到要更新的对象,更改名称,然后尝试使用更新的数组设置"store"的值.

productCollection.Update(query, Update.Set("store", storeList.ToBsonDocument()));
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误: "An Array value cannot be written to the root level of a BSON document."

我想我只需要知道如何将自定义对象数组序列化为BsonDocuments数组.

在此先感谢您的帮助.

c# mongodb mongodb-.net-driver

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

MongoDB .NET在upsert上不生成_id

我正在尝试使用.NET驱动程序将文档插入MongoDB 2.4.4.它似乎不会自动生成_idon upsert,虽然它确实正确生成了_idon plain插入.如何让驱动程序正确生成_id

这是一个展示问题的小例子.

public class MongoObject
{
    [BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
    [BsonRepresentation(BsonType.ObjectId)]
    public string MongoID { get; set; }

    public int Index { get; set; }
}

var obj = new MongoObject()
{
    Index = 1
};

//This inserts the document, but with a _id set to Null
_collection.Update(Query.EQ("Index", BsonValue.Create(1)), Update.Replace(obj), UpdateFlags.Upsert, new WriteConcern() { Journal = true });

//This inserts the document with the expected autogenerated _id
//_collection.Insert(obj);
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-.net-driver

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

在MongoDB .NET Driver 2.0中查找所有

我想查询我的MongoDB集合而没有使用MongoDB .NET Driver 2.0的任何过滤器,但我找不到办法.我有以下解决方法,但看起来很奇怪:D

var filter = Builders<FooBar>.Filter.Exists(x => x.Id);
var fooBars = await _fooBarCollection.Find(filter)
    .Skip(0)
    .Limit(100)
    .ToListAsync();
Run Code Online (Sandbox Code Playgroud)

有没有办法在MongoDB .NET Driver 2.0中没有过滤器的情况下发出查询?

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

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