mgo find将单个值数组转换为字符串

This is part of my collection schema in mongodb:

{ "_id" : ObjectId("55e1eef5255da6d384754642"), "name" : [ "Web, Mobile & Software Dev", "Movil y desarrollo de software" ] } { "_id" : ObjectId("55e1f2d0255da6d38475464b"), "name" : [ "IT & Networking", "TI y Redes" ] } ...

Right now i can get the info like this:

 err := r.Coll.Find(bson.M{}).Select(bson.M{"name": bson.M{"$slice": []int{1, 1}}}).All(&result.Data)

but i want "name" to return a string instead of a single value array, so i dont have to index it inside my frontend if no need.

dpp80346
dpp80346 所以我将不得不循环并自己为所有记录更改它吗?是不是像一个带字符串的concat数组变成字符串或强制转换之类的东西,确定吗?
接近 5 年之前 回复

1个回答

very limited comments i need 2000 poits for editing my post and add more things it seems, this is not answer but maybe, so i have to loop it?, isnt better way?

err := r.Coll.Find(bson.M{}).Select(bson.M{"name": bson.M{"$slice": []int{1, 1}}}).All(&result.Data)                                            
  if err != nil {                                                                                                                                 
      return result, err                                                                                                                          
  }                                                                                                                                               

  type skillnew struct {                                                                                                                          
      Id   bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"`                                                                               
      Name string        `bson:"name,omitempty" json:"name,omitempty"`                                                                            
  }                                                                                                                                               

  skillsallnew := make([]skillnew, len(result.Data))                                                                                              
  for i := range result.Data {                                                                                                                    
      skillsallnew[i] = skillnew{result.Data[i].Id, result.Data[i].Name[0]}                                                                       
  }    
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在mgo中查询字符串数组

<div class="post-text" itemprop="text"> <p>I have an element that looks like this:</p> <pre><code>{"Name":"test name","DBType":0,"UserName":"test user","Password":"","Host":"test host","Port":"123","DBName":"test schema","Options":"test options","Groups":["test1"]} </code></pre> <p>I want to be able to query the cataloug of Datasources for those which are assigned to a particular group.</p> <p>My code for this is:</p> <pre><code>var d []Source q := bson.M{"Groups": bson.M{"$in": [1]string{groupName}}} findErr := c.Find(q).All(&amp;d) </code></pre> <p>However - I get no error and no results.</p> <p>I've also tried</p> <pre><code>q := bson.M{"Groups": groupName} </code></pre> <p>with the same result.</p> <pre><code>//Source describes a data source type Source struct { Name string DBType uint UserName string Password string Host string Port string DBName string Options string Groups []string } </code></pre> <p>I'm stuck - I am puzzled! Any help appreciated.</p> <p>Update - I tried</p> <pre><code>{"Name":"test name"} </code></pre> <p>and this returns 0 items. Yet if I set to nil I get stuff.</p> </div>

MGO查询嵌套的对象数组

<div class="post-text" itemprop="text"> <p>I am having difficulty converting a MongoDB query to mgo bson. The Mongo record schema is as shown below. I want to find records that have topics with label "Education" and "Students".</p> <pre><code>db.questions.insert ( { "_id" : ObjectId("5cb4048478163fa3c9726fdf"), "questionText" : "why?", "createdOn" : new Date(), "createdBy": user1, "topics" : [ { "label": "Education", }, { "label": "Life and Living", }, { "label": "Students" } ] } ) </code></pre> <p>Using Robo 3T, the query looks like this:</p> <pre><code>db.questions.find({$and : [ {"topics": {"label": "Students"}}, {"topics": {"label": "Education"}} ]}) </code></pre> <p>I am having trouble modeling this with MGO. Currently, have tried this:</p> <pre><code>map[$and:[ map[topics:map[label:students]] map[topics:map[label:life and living]] ]] </code></pre> <p>and this</p> <pre><code>map[topics:map[$and:[ map[label:students] map[label:life and living] ]]] </code></pre> </div>

mongo 时间转换,管道语句查询的时候将long型转换为日期字符串

图中capturetime 是number型,例如值为1501540000,转化为time 类型为日期字符串,比如2017-09-14![图片](https://img-ask.csdn.net/upload/201709/23/1506169845_822588.jpg)

在mgo中更新多个数组中的单个子文档

<div class="post-text" itemprop="text"> <p>I have following mongodb (3.4.x) document, i code in golang with mgo driver</p> <pre><code>{ "id": "5981d4c2795a1b4a801ee027", "scenarioId": "59804b10d8ee910085e33865", "messages": [ { "id": "5981d4c2795a1b4a801ee028", "toQueue": [ { "id": "5981d4c2795a1b4a801ee029", "to": { "email": "some@email.com" }, "channel": "EMAIL", "toType": "EMAIL", "status": { "id": 1, "groupId": 1, "groupName": "PROCESSING", "name": "APPROVED", "description": "MessageChain approved for processing" } }, { "id": "5981d4c2795a1b4a801ee02a", "to": { "phone": "+381631891245" }, "channel": "SMS", "toType": "PHONE", "status": { "id": 1, "groupId": 1, "groupName": "PROCESSING", "name": "APPROVED", "description": "MessageChain approved for processing" } } ], "status": { "id": 1, "groupId": 1, "groupName": "PROCESSING", "name": "APPROVED", "description": "MessageChain approved for processing" } }, { "id": "5981d4c2795a1b4a801ee02b", "toQueue": [ { "id": "5981d4c2795a1b4a801ee02c", "to": { "phone": "+123456789" }, "channel": "SMS", "toType": "PHONE", "status": { "id": 1, "groupId": 1, "groupName": "PROCESSING", "name": "APPROVED", "description": "MessageChain approved for processing" } } ], "status": { "id": 1, "groupId": 1, "groupName": "PROCESSING", "name": "APPROVED", "description": "MessageChain approved for processing" } } ], "messageStages": [ { "id": "5981d4c2795a1b4a801ee033", "validityPeriod": 5, "validityPeriodTimeUnit": "MINUTES", "providerId": 5, "email": { "text": "this is the email text", "subject": "and here the email subject" }, "status": { "id": 1, "groupId": 1, "groupName": "PROCESSING", "name": "APPROVED", "description": "MessageChain approved for processing" } } ] </code></pre> <p>}</p> <p>and I know the value of messages.$.toQueue.id, where i want to update status.id in the related toQueue Array Item.</p> <p>I tried to do it that way:</p> <pre><code>query = bson.M{ "messages.toQueue._id": toQueueId, } update = bson.M{ "$set": bson.M{ "messages.$.toQueue.$.status.id": status.Id, "messages.$.toQueue.$.status.name": status.Name, "messages.$.toQueue.$.status.groupId": status.GroupId, "messages.$.toQueue.$.status.groupName": status.GroupName, "messages.$.toQueue.$.status.description": status.Description, }, } err = cr.Update(query,update) </code></pre> <p>but multiple $ are not allowed. Without it's also not updateable.</p> <p>Is there any way to update only the subdocument, which i found in query ?</p> </div>

Golang,MongoDB,使用$ in在数组属性中查找带有一个字符串的所有元素时遇到问题

<div class="post-text" itemprop="text"> <p>I am trying to find all users in a MongoDB collection that contains a username string in the friends array. I am using Golang with the mgo driver. </p> <pre><code> type User struct { ... Friends []string `json: friends bson:"friends,omitempty"` ... } ... // username is a string arr := []string{username} err := c.Find(bson.M{"friends": {"$in": arr}}).All(&amp;users) ... </code></pre> <p>I get this error: http: panic serving [::1]:56358: assignment to entry in nil map</p> <p>Any help would be greatly appreciated.</p> </div>

在文档mongodb mgo驱动程序中的嵌套数组上增加特定值

<div class="post-text" itemprop="text"> <p>Here is my mongo collection in json :</p> <pre><code>"messages" : { "_id" : ObjectId("5c26844696b72e4b6c9ceee7"), "pointer" : ObjectId("5c26844696b72e4b6c9ceee6"), "messages" : [ { "uuid" : "f03f7977-0b4e-11e9-9f95-144fd7c03810", "content" : "Hello", "reportedTimes":0 }, { "uuid" : "78bb831d-0b57-11e9-a286-144fd7c03810", "content" : "Yes", "reportedTimes":0 } ] } </code></pre> <p>I would like to update the "reportedTimes" value from a "pointer" and a "uuid". I tried many aggregations but without result like that one :</p> <pre><code>pipe := []bson.M{bson.M{"$match": bson.M{"pointer": knownPointer}}, {"messages": bson.M{"$match": bson.M{"uuid": knownUUID}}}, {"$inc": bson.M{"messages.$.reportedTimes": 1}}} </code></pre> <p>That one returns that I cannot use "$inc"</p> <p>or that one </p> <pre><code>pipe := []bson.M{{"$match": bson.M{"pointer": knownPointer}}, {"$unwind": "$messages"}, {"$project": bson.M{"uuid": "$messages.uuid", "reportedTimes": "$messages.reportedTimes"}}, {"$match": bson.M{"uuid": knownUuid}}} then inc. </code></pre> <p>I even don't find all my attempts queries... I'm completely stuck... I also tried with Update(selector, query) but still cannot find the working and efficient way to do it. A little help would be appreciated. Thanks all.</p> </div>

使用mgo Golang从MongoDB子文档数组中解组

<div class="post-text" itemprop="text"> <p>I am trying to figure out how to get a single subdocument from an array and unmarshal it into a struct.</p> <p>My mongo document looks like this: </p> <pre><code>{ "_id" : ObjectId("abc123"), "gamecode" : "abc123" "players" : [ { "playerid" : ObjectId("abc123"), "username" : "test", }, { "playerid" : ObjectId("abc456"), "username" : "test2" }] } </code></pre> <p>And I have a player struct that looks like this:</p> <pre><code>type Player struct { PlayerID bson.ObjectId `bson:"playerid" json:"playerid"` Username string `bson:"username" json:"username"` } </code></pre> <p>From the mongo command line I can do a </p> <pre><code>db.games.find(({"players.playerid": ObjectId('abc123')}, {"_id": 0, "players.$":1}) </code></pre> <p>Which returns </p> <pre><code>{"players" : [{ "playerid" : ObjectId("abc123"), "username" : "test"}]} </code></pre> <p>But I am having a hard time figuring out how to implement this same functionality in Go so that I have a populated player struct from the result of the query. I have been playing around with different configurations of the code below, but it always results in an empty struct. What am I missing here?</p> <pre><code>player := Player{} collection.Find(bson.M{"players.playerid": bson.ObjectIdHex(pid)}).Select(bson.M{"_id": 0, "players.$": 1}).One(&amp;player) </code></pre> <p>I am running the latest MongoDB version and am using the mgo.v2 driver for Go.</p> </div>

使用gopkg.in/mgo.v2作为字符串的golang中的自定义mongodb命令

<div class="post-text" itemprop="text"> <p>I was wondering, is there anyway to run my own command (or query) which I have constructed as a string variable using "mgo" in go. </p> <p>Something like this:</p> <pre><code>c := session.DB(DBNAME).C(COLLECTION) c.RUN_COMMAND_AS_STRING("find({username:'vahid'})") </code></pre> </div>

mgo $ all使用数组查询数组并且不区分大小写?

<div class="post-text" itemprop="text"> <p>I have an array of ingredient names that is dynamic and provided per user. I'd like to match it to <code>mongo</code> documents where there is an <code>array</code> of objects called <code>ingredients</code> which has a property <code>name</code>. I've written a query (see below) which will take query parameters from the URL and will return all the documents that have all matching ingredient names, however this search is case sensitive and I'd like it not to be. </p> <p>I've considered using <code>bson.RegEx</code> with <code>Option: "i"</code>, however I'm not sure how to form this query or apply it to an array of strings.</p> <p>Here is the case sensitive query:</p> <pre><code>// Check for ingredients, return all recipes that can be made using supplied ingredients if qryPrms["ingredients"] != nil { mongodQ["ingredients.name"] = bson.M{"$all": qryPrms["ingredients"]} } </code></pre> <p><code>mongodQ</code> is the <code>bson.M</code> I use to query the collection later in the code. Ideally I could apply <code>RegEx</code> to each element in <code>qryPrms["ingredients"]</code> so it would return closely matching ingredients like <code>cheese</code> would return <code>swiss cheese</code> as well. This is also a more general <code>mongodb</code> question I suppose when it comes to querying with a dynamic array.</p> </div>

如何在mgo中对数组元素进行多级拉取?

<div class="post-text" itemprop="text"> <p>I want to do a multi-level array element delete. My Structs are as follows:-</p> <pre><code>type Company struct { Id bson.ObjectId `bson:"_id,omitempty"` CompanyName string Process []ProcessItem } type ProcessItem struct{ SortOrder int Documents []DocumentTemplate } type DocumentTemplate struct { Id bson.ObjectId `bson:"_id,omitempty"` TemplateName string } </code></pre> <p>I want to delete an object of type DocumentTemplate. The DocumentTemplate is a struct array in ProcessItem which is a struct array in Company struct. I have Company Id(field of struct Company) and TemplateName(field of struct DocumentTemplate).</p> <p>I tried the below mgo pull query but it is not working.</p> <pre><code>c := db.C("company") pullQuery := bson.M{"process": bson.M{"documents.templatename": "xyz"}} err := c.Update(bson.M{"_id": "123"}, bson.M{"$pull": pullQuery}) </code></pre> <p>Please point out the mistakes I made here. Thanks.</p> <p><strong>Edit:</strong> Adding one example document for the clarity of the question</p> <pre><code>{ "_id" : ObjectId("573da7dddd73171e42a84045"), "companyname" : "AAA", "process" : [ { "processname" : "Enquiry", "sortorder" : 0, "documents" : [ { "templatename" : "xyz", "processname" : "Enquiry" }, { "templatename" : "ss", "processname" : "Enquiry" } ] }, { "processname" : "Converted", "processtype" : 1, "sortorder" : 2, "documents" : [ { "templatename" : "dd", "processname" : "Converted" }, { "templatename" : "fg", "processname" : "Converted" } ] } ] } </code></pre> <p>I need to pull out just one DocumentTemplete record, like the one below:</p> <pre><code>{ "templatename" : "xyz", "processname" : "Enquiry" } </code></pre> <p>N.B: TemplateName will be unique inside a Company.</p> </div>

在mgo中插入对象ID的数组

<div class="post-text" itemprop="text"> <p>So recently I've been trying to insert different types of data into structures using mgo, and I've ran into a bit of a snag. When trying to insert an array of object IDs, I can't seem to figure out that format if I were to populate that object ID array within the structure.</p> <p>Here's the structure as follows</p> <pre><code>type Group struct { ID bson.ObjectId `json:"id" bson:"_id"` GroupName string `json:"groupName"` UserIDs []*bson.ObjectId `json:"users" bson:"userid"` Expected []*int `json:"expected"` Actual []*int `json:"actual"` } </code></pre> <p>And the operation I am trying to run is to insert a new "test" table with a single userID into UserIDs.</p> <pre><code>array := []*bson.ObjectId{&amp;findJ.ID} c = Session.DB("test").C("Group") err = c.Insert(&amp;Group{GroupName: "test", UserIDs: array}) ThisPanic(err) </code></pre> <p>Where findJ has it's own ID from a separate structure. What am I doing wrong here, as it is causing a panic on inserting the array.</p> </div>

如何在Golang中将json对象数组插入mongodb

<div class="post-text" itemprop="text"> <p>My json looks like the following,</p> <pre><code>[ { "key1": 1, "key2": "val2" }, { "key1": 2, "key2": "val2" } ] </code></pre> <p>This json comes in string format and I want the objects in the json array to be inserted as individual records in mongodb. I referred to <a href="https://labix.org/mgo" rel="nofollow">https://labix.org/mgo</a> but wasn't able to find enough examples on the above use-case. Appreciate your thoughts in finding a solution.</p> </div>

从mgo GridFile提取ID的字符串值

<div class="post-text" itemprop="text"> <p>Being quite new to Go, I am having a hard time using mgo. I am using mgo to fetch files like this :</p> <pre><code>gridfs := db.GridFS("fs") allFiles := gridfs.Find(nil).Iter() </code></pre> <p>And then I use the returned iterator like </p> <pre><code> var f *mgo.GridFile for gridfs.OpenNext(allFiles, &amp;f) { //use f.Id() } </code></pre> <p>I want to start using f.Id() as a String but I am unable to convert. One of the ways I found was by using <code>fileId := (f.Id().(bson.ObjectId)).Hex()</code> which just lets me compile but fails at runtime with the message <code>interface conversion: interface {} is bson.ObjectId, not bson.ObjectId</code></p> <p>Having spent a lot of time on this already, I am definitely open to changing the way I fetch the files if conversion is not possible using <code>GridFile</code>. I would appreciate any help with this. Thanks.</p> </div>

mgo.v2 Find()。Select()。One()返回空白

<div class="post-text" itemprop="text"> <p>The mongo shell output</p> <pre><code>&gt; db.departments.find() { "_id" : ObjectId("5733b051e444917f9d273ce6"), "id" : "5733b05157659a11a4589102", "brandid" : "1", "name" : "first", "managerid" : "0", "users" : [ "1", "2", "3", "7" ] } </code></pre> <p>The function takes depID as input which I verified is exactly what it should be i.e. <code>5733b05157659a11a4589102</code></p> <pre><code>func GetUsers(depID string) (*department.UsersResp, error) { if !bson.IsObjectIdHex(depID) { return nil, fmt.Errorf("%s is not a ObjectId value", depID) } type UserResp struct { users []string } var result *UserResp err := coll.Find(bson.M{"id": depID}).Select(bson.M{"users": 1}).One(&amp;result) if err != nil { fmt.Println(err, result) return nil, err } fmt.Println("result:",result) //ignore return type and value the above print is what i have doubt about return result, nil } </code></pre> <p>the out put of result comes <code>{[]}</code></p> <p>i have tried the following queries other that above<br> <code>err := coll.Find(bson.M{"id": depID})One(&amp;result)</code><br> <code>err := coll.Find(nil).One(&amp;result)</code><br> the result is same.</p> <p>everything is fine with db connection and other things as all the other functions of the same file using the same variable <code>coll</code> works</p> <p><em>More Info</em> Also I have tried this</p> <pre><code>type UserResp struct { users []string `json:"users" bson:"users"` } </code></pre> <p>Mongo LOG</p> <pre><code>MGO: cluster.go:590: Cluster has 1 known masters and 0 known slaves. MGO: socket.go:391: Socket 0xc8201340e0 to 127.0.0.1:27017: serializing op: &amp;mgo.queryOp{collection:"departments.departments", query:bson.M{"id":"5733b05157659a11a4589102"}, skip:0, limit:-1, selector:bson.M{"users":1}, flags:0x4, replyFunc:(mgo.replyFunc)(0x58eef0), mode:1, options:mgo.queryWrapper{Query:interface {}(nil), OrderBy:interface {}(nil), Hint:interface {}(nil), Explain:false, Snapshot:false, ReadPreference:bson.D(nil), MaxScan:0, MaxTimeMS:0, Comment:""}, hasOptions:false, serverTags:[]bson.D(nil)} MGO: socket.go:521: Socket 0xc8201340e0 to 127.0.0.1:27017: sending 1 op(s) (106 bytes) MGO: socket.go:311: Socket 0xc8201340e0 to 127.0.0.1:27017: updated write deadline to 1m0s ahead (2016-05-12 10:18:17.811427695 -0400 EDT) MGO: socket.go:311: Socket 0xc8201340e0 to 127.0.0.1:27017: updated read deadline to 1m0s ahead (2016-05-12 10:18:17.811468447 -0400 EDT) MGO: socket.go:563: Socket 0xc8201340e0 to 127.0.0.1:27017: got reply (106 bytes) MGO: socket.go:622: Socket 0xc8201340e0 to 127.0.0.1:27017: received document: bson.M{"_id":"W3\xb0Q\xe4D\x91\u007f\x9d'&lt;\xe6", "users":[]interface {}{"1", "2", "3", "7"}} MGO: session.go:3062: Query 0xc82012c000 document unmarshaled: &amp;db.UserResp{users:[]string(nil)} {[]} </code></pre> </div>

mgo:如何更新文档中的特定数组

<div class="post-text" itemprop="text"> <p>I have this document inside my database</p> <pre><code>[ { "_id": "53dc97bf91f1f933e15d6fb1", "attributes": { "chilled": false, "flammable": false, "food": false, "fragile": false, "frozen": false, "hot": false, "outsized": false }, "createdAt": "02/08/14 09:48:16", "customer": "53d68bc091f1f933e15d6f90", "location": [ { "count": 0, "warehouse": "53db430c91f1f933e15d6fa6" }, { "count": 34, "warehouse": "53db430c91g1f933e45d6fa4" }, ], "name": "test", "type": "stored", "updatedAt": "" } ] </code></pre> <p>How can i update the location array if i know the warehouse Id? This is what i have now</p> <pre><code>coll := p.GetDb().C("product") changes := bson.M { "location": bson.M { "$elemMatch": bson.M { "warehouse": bson.ObjectIdHex(warehouseId), }, }, "$set": bson.M { "location.$.count": 4, }, } err := coll.UpdateId(bson.ObjectIdHex(productId), changes) if err != nil { http.Error(res, err.Error(), 500) return } </code></pre> <p>But get this error: The dollar ($) prefixed field '$elemMatch' in 'location.$elemMatch' is not valid for storage.</p> <p>thx.</p> </div>

如果数组包含匹配值,则查找mgo文档

<div class="post-text" itemprop="text"> <p>I have the following function in my API in order to check a user owns a related document</p> <pre><code>type User struct { Id bson.ObjectId `bson:"_id,omitempty" json:"id"` Name string `form:"name" bson:"name,omitempty" json:"name,omitempty"` Password string `form:"password" bson:"password,omitempty" json:"-" binding:"required"` Email string `form:"email" bson:"email,omitempty" json:"email" binding:"required"` Artists []bson.ObjectId `form:"artists" bson:"artists,omitempty" json:"artists" inline` ContentFeed []bson.ObjectId `form:"content_feed" bson:"content_feed,omitempty" json:"content_feed" inline` Location string `form:"user_location" bson:"user_location,omitempty" json:"user_location,omitempty"` TopTracks []bson.ObjectId `form:"top_tracks" bson:"top_tracks" json:"top_tracks" inline` Avatar string `form:"avatar" bson:"avatar,omitempty" json:"avatar,omitempty"` BgImg string `form:"bg_img" bson:"bg_img,omitempty" json:"bg_img,omitempty"` } // Get artist // This doesn't actual get the full artist object, this just checks that // the artist id given is stores against the given users list of artists func (repo *UserRepo) GetArtist(user string, artist string) (bool, error) { userData := &amp;User{} fmt.Println(user) err := repo.collection.Find(bson.M{"_id": user, "artists": bson.M{"$in": []bson.ObjectId{bson.ObjectIdHex(artist)}}}).One(&amp;userData) if err != nil { fmt.Println(err) return false, err } return true, err } </code></pre> <p>However it returns an error which prints 'not found', despite giving it two ID's which definitely exist and are related when I inspect the list of artist id's for that given user. </p> </div>

构建同时包含字符串和正则表达式模式的$ in数组

<div class="post-text" itemprop="text"> <p>I have a Mongo collection where every document in the collection has a sources array property. Searches on this property can be a combination of exact matches and regex. For example, when using Mongo shell, the query below searches for documents with source='gas valves' OR 'hose' is contained in source item. This works just as I expect</p> <pre><code>db.notice.find({sources:{$in:[/\bhose/i,'gas valves']}}) </code></pre> <p>Things get a little trickier in mgo. Because some items in the $in array can be regex, and the others strings - the only way I have figured to make a query is by using $or:</p> <pre><code>var regEx []bson.RegEx var matches []string // do stuff to populate regEx and matches filter["$or"] = []bson.M{ {"sources":bson.M{"$in":regEx}}, {"sources":bson.M{"$in":matches}}, } </code></pre> <p>Is there some way I could construct one slice with both regex and string to use with $in - eliminating the need for the $or</p> </div>

Mgo如何在嵌套数组中查找嵌套文档?

<div class="post-text" itemprop="text"> <p>Here below I have document structure designed as follows:</p> <pre><code>type MIS_Course struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string `bson:"crse_name"` } type MIS_Department struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string `bson:"dept_name"` Courses []MIS_Course `bson:"crse_list"` } type MIS_School struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string `bson:"school_name"` Departments []MIS_Department `bson:"dept_list"` } </code></pre> <p>And when initialized, I would have a "School ABC" in a sea of schools containing something that looks like below:</p> <pre><code>{ "_id" : ObjectId("55fbb522022aae7b3a000003"), "school_name" : "School ABC", "dept_list" : [ { "dept_name" : "Department A", "crse_list" : [ { "crse_name" : "Class A" }, { "crse_name" : "Class B" }, ] } ] } </code></pre> <p>For hours on end I couldn't find a solution that effectively works by given the school_name, dept_name, and crse_name:</p> <p>Find the <code>dept_list</code> of <code>school_name</code> &gt; find the <code>crse_list</code> of <code>dept_name</code> &gt; find <code>crse_name</code></p> <p>The reason that such chain of finds are required is because the scope of the find should be limited to the school, and then the department. Logic and housekeeping happens after the each stages of finds. </p> <p>I tried code such as</p> <pre><code>result := MIS_School{} err := database.C("schools").Find(bson.M{"school_name": school}).Select( bson.M{"dept_list": bson.M{"$elemMatch": bson.M{"dept_name": dept}}}).Select( bson.M{"crse_list": bson.M{"$elemMatch": bson.M{"crse_name": crse}}}).One(&amp;result) </code></pre> <p>But it didn't work since Select projections can't be chained in Mgo(?)</p> <p>I have read from somewhere that mongodb doesn't have the capability to directly retrieve documents nested in arrays deeper than 1-2 levels (Getting Document C inside B array inside A array). Is that true? How could I work around this problem?</p> <p>Thanks!</p> </div>

如何在Mgo的Mongodb中更新子文档数组字段以及其他一些字段?

<div class="post-text" itemprop="text"> <p>Can we update sub-document array fields along with other document fields in Mgo? If so, please help me with my query.</p> <pre><code> c := db.C("user") colQuerier := bson.M{"email": *olduname} change := bson.M{"$set":bson.M{"password":*pwd, "place":*place, "emails.$.received":*received,"emails.$.sent":*sent}} err := c.Update(colQuerier, change) </code></pre> <p>My Database Structs are as follows:</p> <pre><code>type Emails struct{ Id bson.ObjectId `bson:"_id,omitempty"` Received string Sent string } type User struct { Id bson.ObjectId `bson:"_id,omitempty"` Email string Password string Place string Emails } </code></pre> <p>I am getting a run time error saying: The positional operator did not find the match needed from the query. Unexpanded update: emails.$.received</p> </div>

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

组成原理课程设计(实现机器数的真值还原等功能)

实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

javaWeb图书馆管理系统源码mysql版本

系统介绍 图书馆管理系统主要的目的是实现图书馆的信息化管理。图书馆的主要业务就是新书的借阅和归还,因此系统最核心的功能便是实现图书的借阅和归还。此外,还需要提供图书的信息查询、读者图书借阅情况的查询等

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

Java8零基础入门视频教程

Java8零基础入门视频教程

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

TTP229触摸代码以及触摸返回值处理

自己总结的ttp229触摸代码,触摸代码以及触摸按键处理

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Ubuntu18.04安装教程

Ubuntu18.04.1安装一、准备工作1.下载Ubuntu18.04.1 LTS2.制作U盘启动盘3.准备 Ubuntu18.04.1 的硬盘空间二、安装Ubuntu18.04.1三、安装后的一些工作1.安装输入法2.更换软件源四、双系统如何卸载Ubuntu18.04.1新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列...

快速排序---(面试碰到过好几次)

原理:    快速排序,说白了就是给基准数据找其正确索引位置的过程.    如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾.    首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18&amp;lt...

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

HTML期末大作业

这是我自己做的HTML期末大作业,花了很多时间,稍加修改就可以作为自己的作业了,而且也可以作为学习参考

Python数据挖掘简易入门

Python数据挖掘简易入门

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

C++语言基础视频教程

C++语言基础视频教程

UnityLicence

UnityLicence

软件测试2小时入门

软件测试2小时入门

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

Python数据分析师-实战系列

系列课程主要包括Python数据分析必备工具包,数据分析案例实战,核心算法实战与企业级数据分析与建模解决方案实战,建议大家按照系列课程阶段顺序进行学习。所有数据集均为企业收集的真实数据集,整体风格以实战为导向,通俗讲解Python数据分析核心技巧与实战解决方案。

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

超详细MySQL安装及基本使用教程

一、下载MySQL 首先,去数据库的官网http://www.mysql.com下载MySQL。 点击进入后的首页如下:  然后点击downloads,community,选择MySQL Community Server。如下图:  滑到下面,找到Recommended Download,然后点击go to download page。如下图:  点击download进入下载页面选择No...

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

web网页制作期末大作业

分享思维,改变世界. web网页制作,期末大作业. 所用技术:html css javascript 分享所学所得

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问