Comments (5)
Hi,
could you explain it by example and give me some more details about what you want to achieve?
Best regards
Philipp
from mongodm.
let say i have a model like this:
`
Sender interface{} `json:"sender" bson:"sender" model:"User" relation:"11" required:"true"`
Receiver interface{} `json:"receiver" bson:"receiver" model:"User" relation:"1n" required:"true"`
Text string `json:"text" bson:"text" minLen:"1" maxLen:"500" required:"true"`
`
and what i want to achieve is to retrieve all messages with certain sender/receiver id,
from mongodm.
If I understand you right, you want to do something like this (with name, id, whatever..):
messages := []*Message{}
err = Message.Find(bson.M{"sender.name" : "Max"}).Exec(&messages)
This is currently only possible, if you embed the struct types (like http://stackoverflow.com/questions/26433463/mgo-mongodb-finding-documents-that-match-one-field-from-embedded-struct) or query directly by id.
A fast example with id query would be:
type (
UserModel struct {
DocumentBase `json:",inline" bson:",inline"`
Name string `json:"name" bson:"name" minLen:"1" maxLen:"10" required:"true"`
}
MessageModel struct {
DocumentBase `json:",inline" bson:",inline"`
Sender interface{} `json:"sender" bson:"sender" model:"UserModel" relation:"11" required:"true"`
Text string `json:"text" bson:"text" minLen:"1" maxLen:"500" required:"true"`
}
)
// Create connection ahead..
User := dbConnection.Model("usermodel")
Message := dbConnection.Model("messagemodel")
user := &UserModel{}
message := &MessageModel{}
message2 := &MessageModel{}
User.New(user)
Message.New(message)
Message.New(message2)
user.Name = "Nils"
err := user.Save()
if err != nil {
fmt.Println(err)
}
message.Text = "First message"
message.Sender = user
err = message.Save()
if err != nil {
fmt.Println(err)
}
message2.Text = "Second message"
message2.Sender = user
err = message2.Save()
if err != nil {
fmt.Println(err)
}
messages := []*MessageModel{}
err = Message.Find(bson.M{"sender" : user.Id}).Populate("Sender").Exec(&messages)
if _, ok := err.(*NotFoundError); ok {
fmt.Println("No records")
} else if err != nil {
fmt.Println(err)
} else {
for _, message := range messages {
fmt.Println(message.Text)
}
}
// Output:
// First message
// Second message
Do you need any more information?
from mongodm.
ah finally, thanks a lot,
from mongodm.
For the receivers you could use the logical operator $in
with your query..
You`re welcome :)
from mongodm.
Related Issues (18)
- About contributing HOT 11
- Replace unmaintained mgo dependency with community fork HOT 1
- Change license to MIT
- Virtuals and Hooks (like in mongoose)
- Put docker infos back to readme? HOT 2
- using Documentbase.Update() HOT 1
- Assigning a 1n relation
- 1n relation. saving objectId's and populating them
- Populating on .Find()
- Allow nested fields to be populated
- How to create index on model? HOT 1
- Need to add `sparse` annotation support to model field
- Fatal error, mongodb initialization failed: open /home/user/work/pkg/mod/github.com/zebresel-com/[email protected]+incompatible/locals.json: no such file or directory" HOT 1
- Slices always viewed as relations HOT 3
- Getting Error does not implement DefaultValidate HOT 4
- Expanding mongodm.Config HOT 3
- mongodb3.0 SCRAM-SHA-1? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mongodm.