如何使用mongo-go-driver过滤字段。使用findopt.Projection进行了尝试,但没有成功。
type fields struct {
_id int16
}
s := bson.NewDocument()
filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId))
var opts []findopt.One
opts = append(opts, findopt.Projection(fields{
_id: 0,
}))
staCon.collection.FindOne(nil, filter, opts...).Decode(s)
最后,我要取消显示字段“ _id”。但是文件没有改变。
编辑: 随着mongo-
go驱动程序的发展,可以使用以下简单方法指定投影bson.M
:
options.FindOne().SetProjection(bson.M{"_id": 0})
原始(旧)答案如下。
它对您不起作用的原因是因为fields._id
未导出该字段,因此,没有其他包可以访问它(仅声明包)。
您必须使用导出的字段名称(以大写字母开头),例如ID
,并使用struct标记将其映射到MongoDB _id
字段,如下所示:
type fields struct {
ID int `bson:"_id"`
}
现在使用投影执行查询:
projection := fields{
ID: 0,
}
result := staCon.collection.FindOne(
nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
请注意,您也可以将a bson.Document
用作投影,您不需要自己的struct类型。例如,以下操作相同:
projection := bson.NewDocument(
bson.EC.Int32("_id", 0),
)
result := staCon.collection.FindOne(
nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
问题内容: 参考文献: http://www.mongodb.org/display/DOCS/Java+Tutorial 对于mongo db来说还算是新手,但是我正在尝试更新集合中现有文档的一部分…不幸的是,上面的链接没有更新示例。 本质上,我只希望能够: 向文档添加新字段 将文档的现有字段更新为新值 这是我的代码(Grails + Groovy + Java + MongoDB + Java
我需要从数据库中获取文档,数据如下 我使用了下面的代码段,但它返回 2 个文档而不是一个。 上面的代码还提供了一个文档,该文档对数组中的一个元素具有isActive:false。 预期输出是systemName:ABC的Document,因为它在数组的所有元素中都有isActive:false。 感谢任何帮助/建议。
以下查询在mongo shell中完美运行。 我想用java编程实现同样的功能。我尝试了以下方法,但没有得到任何结果。
我正在尝试将mongo shell与我的mongo atlas M0集群连接,结果出现了这个错误 错误消息 我尝试的解决方案无效: 我将monog版本升级到4.2,以便与atlas中的mongo版本保持同步,但没有解决mongo出现此错误的问题 "mongodb://cluster0-shard-00-02.79t7i.azure.mongodb.net:27017,cluster0-shard-
我试图将一个不可变的对象从MongoDB映射到我的Java POJO,我不断得到以下错误: 似乎在使用不可变对象时,我需要使用@BsonCreator进行注释,但这似乎不起作用,我认为这可能是因为使用此注释需要我以某种方式配置。也许我是瞎子,但我似乎找不到任何关于如何配置的例子。任何帮助都将不胜感激。以下是我的注释POJO:
[debug]应用程序-update(){“_id”:{“$OID”:“5759542A4E0BF602ADCAB149”},“title”:“文本平铺”,“信誉”:0} [debug]application-org.mongodb.scala.observableImplicits$boxedobservable@61ddc581 [debug]application-onsubscribe:o