获取MongoDB中插入文档的_id?

Ear*_*rlz 28 c# mongodb mongodb-.net-driver

说我有产品清单.当我添加新产品时,我使用类似的东西保存它

var doc=products.Insert<ProductPDO>(p);
Run Code Online (Sandbox Code Playgroud)

问题是我想在完成此操作后将用户重定向到包含该产品的页面.所以我需要重定向说/products/<ObjectID>

但是,我认为没有办法在没有手动查询数据库的情况下正确获取ObjectID并查找具有所有相同字段等的文档.

有没有更简单的方法?(doc在这种情况下,由于某种原因返回null)

Sco*_*dez 45

您可以检查插入文档的id字段.它应该填写.

提问者编辑:

为了清楚起见,为了在你自己的类中创建一个id字段,你只需使用:

[BsonId]
public ObjectId Id { get; set; }
Run Code Online (Sandbox Code Playgroud)


Sha*_*ssy 14

将对象插入mongodb时,mongo将使用内部ID更新对象.

因此,如果

data = {
  title: "Howdy"
}
Run Code Online (Sandbox Code Playgroud)

然后当我们将数据对象插入db时

db.collection('collectionName', function(err, collection) {
  collection.insert(data);
  console.log(data._id); // <- The mongodb id is now set on the item
});
Run Code Online (Sandbox Code Playgroud)


Jor*_*a Z 6

正如上面的评论,在你的模型中添加 fild ID

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string id { get; set; }
Run Code Online (Sandbox Code Playgroud)

使用:

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
Run Code Online (Sandbox Code Playgroud)

然后当你插入对象时,mongo 将文档的 ID 返回到模型的 fild ID 中。