测试完mgo中的DBRef后,想接着测试指定字段的显示,才发现原来采用框架编码,很多问题被隐藏了起来:

1.显示指定字段:

之前在使用mgo时一直是查询全部字段,在mongo终端环境写为如下格式:

> db.logs.find({},{"log":})
{ "_id" : "3a06384a40a8e587806f194c6c80253e", "log" : "这是一个测试日志" }
{ "_id" : "36bb718040a4362b8035ebd822125dba", "log" : "这是一个测试日志" }

为了保证只显示log内容,需要去掉id显示,则写成这样

> db.logs.find({},{"_id":,"log":})
{ "log" : "这是一个测试日志" }
{ "log" : "这是一个测试日志" }

在golang中的mgo写法却需要借助mgo中的select()方法实现,代码如下:

err = d.Find(bson.M{}).Select(bson.M{"log": }).All(&result1)

结果如下:

[ `run` | done: .828631ms ]
[{b5e57fed409eab8e804e17088b1fdaae 这是一个测试日志 { <nil> } -- :: + UTC}
{261e7fe9402c6842807092e7f0df61ce 这是一个测试日志 { <nil> } -- :: + UTC}

去掉id显示:

err = d.Find(bson.M{}).Select(bson.M{"log": 1, "_id": 0}).All(&result1)

结果

{ 这是一个测试日志 { <nil> } -- :: + UTC}
{ 这是一个测试日志 { <nil> } -- :: + UTC}

嗯.....如果想只显示一个字段,我现在的办法是进行循环输出.

	for i := 0; i < len(result1); i++ {
fmt.Println(result1[i].Log)
}

  参考:mgo如何返回部分field?

2.查询ID的值:

在mongo终端很简单:

> db.logs.find({},{"_id":})
{ "_id" : "3a06384a40a8e587806f194c6c80253e" }
{ "_id" : "36bb718040a4362b8035ebd822125dba" }

在mgo下却查不出来?问题在struct中

//错误写法
type Log struct {
LogId string
Log string
LogUser mgo.DBRef
Inserted time.Time
} //正确写法
type Log struct {
LogId string `bson:"_id"`
Log string
LogUser mgo.DBRef
Inserted time.Time
}

 再查询ID没有问题了:),注意查的时间是查"_id"而不是logid

err = d.Find(bson.M{}).Select(bson.M{"_id": 1}).All(&result1)

结果:

{32197b67400e229f8017fd8258c2f700  { <nil> } -- :: + UTC} 
{e7dda7b34052584280ef55f49b16eb2c { <nil> } -- :: + UTC}

参考:mgo 如何根据指定的 _id 查询到结果啊?

  

mgo-后续测试(指定字段,获取id)的更多相关文章

  1. Yii2框架查询指定字段和获取添加数据的id

    指定字段: $historyinfo = Healthy::find()->select(['healthy_id','pet_name','hardware_name','hardware_c ...

  2. sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密

    /****** Object: StoredProcedure [dbo].[getSplitValue] Script Date: 03/13/2014 13:58:12 ******/ SET A ...

  3. ruby pluck用法,可以快速从数据库获取 对象的 指定字段的集合数组

    可以快速从数据库获取 对象的 指定字段的集合数组 比如有一个users表,要等到user的id数组: select id from users where age > 20; 要实现在如上sql ...

  4. 获取请求 header 中指定字段的值

    private function getHeader($name) {//获取请求头中$name的值 $name = 'HTTP_' . $name; foreach ($_SERVER as $ke ...

  5. MySQL获取指定字段不重复的记录

    关键词:DISTINCT 1.比如数据库一组数据查询如下,返回店铺下所有的区域id 2.SQL统计返回指定字段 district 不重复的 记录id,SQL如下 SELECT DISTINCT(dis ...

  6. Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

    应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...

  7. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  8. C#NPOI.RabbitMQ.EF.Attribute.HttpRuntime.Cache.AD域.List<T>根据指定字段去重.前端JQuery.Cache.I18N(多语言).data-xx(自定义属性)

    使用NPOI 操作Excel 个人使用的电脑基本默认安装Excel 操作起来 调用Excel的组件便可.如果是一台服务器.没有安装Excel,也就无法调用Excel组件. 在此推荐第三方插件.NPOI ...

  9. Yii使用find findAll查找出指定字段的实现方法

    Yii使用find findAll查找出指定字段的实现方法,非常实用的技巧,需要的朋友可以参考下. 用过Yii的朋友都知道,采用如下方法: 查看代码   打印 1 modelName::model() ...

随机推荐

  1. 简单并查集 -- HDU 1232 UVALA 3644 HDU 1856

    并查集模板: #include<iostream> using namespace std; ],x,y; ]; //初始化 x 集合 void init(int n) { ; i< ...

  2. PHP 调试

    $log_path = '/data0/www/html/hejungw/static/log/uploadlog/'; $log = $log_path . date('Y-m-d') . '.lo ...

  3. PAT (Basic Level) Practise:1016. 部分A+B

    [题目链接] 正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA.例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6. 现给定A.DA. ...

  4. HDU 2277 Change the ball

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2277 Change the ball Time Limit: 2000/1000 MS (Java/O ...

  5. iframe的使用

    function Report() {           var info = document.getElementById("iframeReport");          ...

  6. hive索引表

    create table index_tmp(id int,name string,dt string) row format delimited fields terminated by ',' s ...

  7. JavaSE坦克网络版

    02.1.建立Server(保持这个TankServer一直运行) package server; public class TankServer { public static void main( ...

  8. LeetCode 【46. Permutations】

    Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] have t ...

  9. LeetCode【169. Majority Element】

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  10. JSBinding / About 2048 sample

    2048 Source 2048 source code is here: https://github.com/gabrielecirulli/2048 Play here!http://gabri ...