我有一个最新的mongodb 3.2,并且有许多具有timeStamp的项目的集合.
需要将毫秒转换为Date对象,现在我使用此函数:
db.myColl.find().forEach(function (doc) {
doc.date = new Date(doc.date);
db.myColl.save(doc);
})
Run Code Online (Sandbox Code Playgroud)
更新2百万行需要很长时间.
我尝试使用updateMany(似乎它非常快)但我如何才能访问当前文档?有没有机会使用updateMany重写上面的查询?
谢谢.
我正在使用最新的 MongoDB C# 驱动程序,但我的一个查询出现问题。我正在尝试更新 Mongo 中文档中的字段并通过其 id 字段识别该文档。我已经编写了类似的查询,可以根据其他字段过滤文档,但由于某些原因,它不适用于 id 字段。
我的查询:
public static async Task<bool> Delete(string Guid)
{
var database = new MongoDB();
var thingsCollection = database.Things;
var builder = Builders<ThingsModel>.Filter;
var filter = builder.Eq("_id", Guid);
var update = Builders<ThingsModel>.Update
.Set("IsActive", false);
var updateResult = await thingsCollection.UpdateOneAsync(filter, update);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我意识到我每次都会返回 true,但这只是为了测试。从 Mongo 返回的 updateResult 对象表示,尽管它是 thingsCollection 中的一个事物,并且 Guid 作为参数传入,但它没有找到任何匹配项。我还将 Guid 属性标记为集合中的 ID 字段,如下所示:
[BsonId]
public Guid Guid { get; set; }
Run Code Online (Sandbox Code Playgroud)
我也知道我需要将名称从 Guid 更改为其他名称,因为这是不好的做法,但一次只做一件事:) 我感谢任何帮助!
Windows 10
Vagrant文件位于驱动器E:\ Vagrant\ubuntu-trusty-vb上
Virtualbox机器文件夹F:
当vagrant up运行时,.vbox文件中的HardDisk条目不会更改为正确的目录而 f:\ubuntu-cloudimg-trusty-vagrant-amd64_1465748344502_5020
不是实际创建的目录F:\ubuntu-trusty-vb_default_1465748361721_37792
<HardDisks>
<HardDisk uuid="{e1fce00d-2c78-4d36-9bff-5fcb08ff1b32}" location="f://ubuntu-cloudimg-trusty-vagrant-amd64_1465855041577_18173/box-disk1.vmdk" format="VMDK" type="Normal"/>
</HardDisks>
E:\Vagrant\ubuntu-trusty-vb>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: Setting the name of the VM: ubuntu-trusty-vb_default_1465855058236_73527
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces …
Run Code Online (Sandbox Code Playgroud) 我收到了一些 JSON 数据文件 - 然而,它的每个对象中都包含 BSON 数据类型;最重要的是,它是一个非常大的 tojson 转储(数百万条记录)。
我正在尝试反序列化数据,但正如预期的那样,它失败了。
JSON 文件包含以下内容:
"someKey" : NumberLong("1234567889"),
Run Code Online (Sandbox Code Playgroud)
它还包含 ISODate...
有没有办法用 Json.net 来处理这个问题?似乎可能有一些设置让它使用自定义函数而不是特定键的内置解析器?
*更新为包括用于非常大(100GB+ 文件)的流+文本阅读器的代码
using (StreamReader file = File.OpenText(@"\\largedump.txt"))
using (JsonTextReader reader = new JsonTextReader(file))
{
reader.SupportMultipleContent = true;
var serializer = new JsonSerializer();
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartObject)
{
Contacts c = serializer.Deserialize<Contacts>(reader);
Console.WriteLine(c.orgId);
}
}
}
Run Code Online (Sandbox Code Playgroud) 您好,我是 MongoDB 的新手,我一直在寻找一种将字段添加到数组中的嵌入文档的方法
// 收藏
> db.test.find().pretty();
{
"_id" : ObjectId("5761765a31356152793c8790"),
"name" : "bb",
"email" : "bb@mail",
"projects" : [
{
"project_id" : ObjectId("576179bf31356152793c879c")
//How can i add a name here
}
]
}
>
Run Code Online (Sandbox Code Playgroud) 我正在使用C#驱动程序将文档插入MongoDB集合,当我调试应用程序时,其中一个字段类型与DateTime我在"FrameTimeStamp"字段中看到服务器时间我将传递给Mongo,这是我的代码:
FrameDocument frameDoc = new FrameDocument();
frameDoc.Frame = imageBA;
frameDoc.EventCodeId = 1;
frameDoc.SesionId = 1;
frameDoc.FrameTimeStamp = DateTime.Now;
frameDoc.ServerUserId = (int)toMongoDt.Rows[0]["ServerUserId"];
frameDoc.TraderId = (int)toMongoDt.Rows[0]["TraderId"];
frameDoc.ActivePick = (int)toMongoDt.Rows[0]["ActivePick"];
frameDoc.TraderName = (string)toMongoDt.Rows[0]["TraderName"];
frameDoc.ServerUserName = (string)toMongoDt.Rows[0]["ServerUserName"];
var mongoCon = "mongodb://127.0.0.1";
MongoClient client = new MongoClient(mongoCon);
var db = client.GetDatabase("Video");
var frameCollection = db.GetCollection<FrameDocument>("Frame");
frameCollection.InsertOne(frameDoc);
Run Code Online (Sandbox Code Playgroud)
在shell中,当我读取数据时,我会看到以下格式: 2016-08-14T06:10:33.295Z并且时间不是服务器时间,它的UTC,我如何强制mongo将DateTime写为我通过了,?
mongodb ×5
c# ×3
arrays ×1
asp.net ×1
bson ×1
javascript ×1
json ×1
linqpad ×1
vagrant ×1
virtualbox ×1