我正在使用MongoDB的C#驱动程序,并且我试图让Query.Near工作以在中心点的5,10,25或50英里内返回待售房屋.这是查询:
var near = Query.Near("Coordinates", coordinates.Latitude, coordinates.Longitude, find.GetRadiansAway(), false);
//var near = Query.WithinCircle("Coordinates", coordinates.Latitude, coordinates.Longitude, find.GetRadiansAway(), false);
var query = Collection().Find(near);
query.Limit = 1000;
var listings = query.ToList();
Run Code Online (Sandbox Code Playgroud)
我将里程半径除以62.1868289以获得弧度并将其输入到查询中,但无论我传递的是什么弧度值,它都会返回相同数量的待售房屋.我也尝试将球形参数设置为true和使用Query.WithinCircle,但是它们都不会更好.
我正在使用最新的C#驱动程序(1.0.0.4098),这是C#驱动程序中的一个错误,MongoDB中的错误,还是我在这里遗漏了什么?
以下是查询的外观:
5英里(近):
db.Listing.find({ "Coordinates" : { "$near" : [39.4812172, -76.6438598], "$maxDistance" : 0.072463768115942032 } });
Run Code Online (Sandbox Code Playgroud)
10英里(近):
db.Listing.find({ "Coordinates" : { "$near" : [39.4812172, -76.6438598], "$maxDistance" : 0.14492753623188406 } });
Run Code Online (Sandbox Code Playgroud)
5英里远(近球形):
db.Listing.find({ "Coordinates" : { "$nearSphere" : [39.4812172, -76.6438598], "$maxDistance" : 0.0012629451881788331 } });
Run Code Online (Sandbox Code Playgroud)
10英里远(近球形):
db.Listing.find({ "Coordinates" : { "$nearSphere" : …Run Code Online (Sandbox Code Playgroud) 每个标题 - 我正在使用官方的mongodb驱动程序,我希望获得给定边界框内的所有POI.
到目前为止,我有:
MongoCollection<BsonDocument> collection = _MongoDatabase.GetCollection("pois");
BsonArray lowerLeftDoc = new BsonArray(new[] { lowerLeft.Lon, lowerLeft.Lat});
BsonArray upperRightDoc = new BsonArray(new[] { upperRight.Lon, upperRight.Lat});
BsonDocument locDoc = new BsonDocument
{
{ "$within", new BsonArray(new[] { lowerLeftDoc, upperRightDoc})}
};
BsonDocument queryDoc = new BsonDocument { { "loc", locDoc }};
IList<TrafficUpdate> updates = new List<TrafficUpdate>();
var results = collection.Find(new QueryDocument(queryDoc)).SetLimit(limit);
foreach (BsonDocument t in results)
{
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.我明白了:
QueryFailure标志在类型中是未知$:0(响应是{"$ err":"未知$在类型中:0","代码":13058}).
我得到了来自服务器的一些记录有10分钟的时间间隔(1小时,我会得到6个文件),我想要做的地图减少在接下来的几个小时,每1小时,我将不得不做下一组的地图减少6个文件与去年小时文件我将如何解决这个问题?帮助我在过去1个月里混淆了frm谢谢你Sushil Kr Singh
我需要用MongoDB集合实现FIFO逻辑:
集合中的文档除了自动生成的_id(ObjectId)之外没有任何索引.
我想知道,是否有可能从集合中找到并删除第一个文档并保证推送和弹出操作将以原子方式执行FIFO堆栈?
我知道可以使用原子推送和弹出操作来处理文档中的数组,但主要问题是如果我将所有数据存储在1个文档的数组中,它的大小将超过16MB(MongoDB允许的最大大小)文献)
在此先感谢,Valentin
使用MongoDB C#驱动程序如何解析JSON数组(字符串)BsonDocument[]?
我们想将mongo聚合管道存储在单独的JSON文档中,因此需要一种方法来解析它们.
假设"doc"是我要插入MongoDB集合的一些文档,"collection"是我将文档插入的集合.
我有以下内容:
try
{
WriteConcern wc = new WriteConcern();
wc.W = 1;
wc.Journal = true;
WriteConcernResult wcResult = collection.Insert(doc, wc);
if (!string.IsNullOrWhiteSpace(wcResult.ErrorMessage) || !wcResult.Ok)
{
return ErrorHandler(...);
}
else
{
return SuccessFunction(...);
}
}
catch (Exception e)
{
return e.Message;
}
Run Code Online (Sandbox Code Playgroud)
基本上,如果插入因任何原因(硬件不再正常工作)失败,我想处理它(通过ErrorHandler函数或catch子句),如果成功,我想调用SuccessFunction.
我的问题:以上代码是否足以进行错误检查?换句话说,是否会捕获所有失败的插入,以便在这些情况下永远不会调用SuccessFunction?
我使用下面的代码按字段名称过滤集合.但result.Current总是null存在而数据存在于MongoCollection.有任何想法吗?
码
public async Task<IdentityUser> FindByNameAsync(string userName)
{
if (string.IsNullOrEmpty(userName))
{
throw new ArgumentException("Null or empty argument: userName");
}
var filter = Builders<IdentityUser>.Filter.Eq("UserName", userName);
var result = await _collection.FindAsync(filter);
if (result != null && result.Current != null && result.Current.Count() == 1)
{
return result.Current.Single();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
Mongo文件
{
"_id": {
"$oid": "558acd1768869a0f6c45ab78"
},
"CreatedBy": 0,
"UpdatedBy": 0,
"CreatedTime": {
"$date": "2015-06-24T15:30:28.336Z"
},
"UpdatedTime": {
"$date": "0001-01-03T00:00:00.000Z"
},
"UserName": "test",
"Email": null,
"EmailConfirmed": …Run Code Online (Sandbox Code Playgroud) 我想Dictionary<long, VALUE>在MongoDB中序列化以下JSON.
{
"213" : {},
"63624" : {},
...
}
Run Code Online (Sandbox Code Playgroud)
我不想要其他的DictionaryRepresentation除外DictionaryRepresentation.Document.Document
我正在使用MongoDB C#驱动程序(v2.0.1.27),将long类型密钥转换为智能并不聪明string,这会导致异常.
谢谢
我有一个rabbitmq消费者应用程序在.net中实现"发布/订阅模式",它完美地作为控制台应用程序运行,但当我将其部署为Windows服务时,似乎并没有将数据保存到mongodb中.
protected override void OnStart(string[] args)
{
try
{
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.ExchangeDeclare(exchange: "test", type: "fanout");
var queueName = channel.QueueDeclare().QueueName;
channel.QueueBind(queue: queueName, exchange: "logs", routingKey: "");
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
BsonDocument document = BsonDocument.Parse(message);
var database = …Run Code Online (Sandbox Code Playgroud) 我有以下格式的MongoDB集合。
{
"_id" : ObjectId("56c6f03ffd07dc1de805e84f"),
"Details" : {
"a" : [
[ {
"DeviceID" : "log0",
"DeviceName" : "Dev0"
},
{
"DeviceID" : "log1",
"DeviceName" : "Dev1"
}
],
[ {
"DeviceID" : "Model0",
"DeviceName" : "ModelName0"
},
{
"DeviceID" : "Model1",
"DeviceName" : "ModelName1"
}
]
]
}
}
Run Code Online (Sandbox Code Playgroud)
而且我正在尝试获取DeviceName数组“ a”中包含特定值(例如“ Name0”)的所有文档。但是,使用下面的Mongo查询时,我可以获得所需的结果:
db.test_collection.find({"Details.a":{$elemMatch:{$elemMatch:{DeviceName : /.*Name0.*/}}}});
Run Code Online (Sandbox Code Playgroud)
现在,我正在努力用C#实现上述查询。有人可以指导我吗?
到目前为止,我已经尝试了下面的代码,它没有按预期工作
query = Query.And(Query.ElemMatch("Details.a", Query.And(Query.ElemMatch("DeviceName", Query.Matches("DeviceName", new BsonRegularExpression("Name0"))))));
Run Code Online (Sandbox Code Playgroud)
提前致谢