У меня есть объект здания, в котором внутри находится массив объектов пола.MongoDB (Mgo v2) Projection возвращает родительскую структуру
При проектировании моя цель - вернуть или подсчитать количество объектов пола внутри объекта здания после соответствующего соответствия элементов. Код выглядит следующим образом:
объектов:
type Floor struct {
// Binary JSON Identity
ID bson.ObjectId `bson:"_id,omitempty"`
// App-level Identity
FloorUUID string `bson:"f"`
// Floor Info
FloorNumber int `bson:"l"`
// Units
FloorUnits []string `bson:"u"`
// Statistics
Created time.Time `bson:"y"`
}
type Building struct {
// Binary JSON Identity
ID bson.ObjectId `bson:"_id,omitempty"`
// App-level Identity
BldgUUID string `bson:"b"`
// Address Info
BldgNumber string `bson:"i"` // Street Number
BldgStreet string `bson:"s"` // Street
BldgCity string `bson:"c"` // City
BldgState string `bson:"t"` // State
BldgCountry string `bson:"x"` // Country
// Building Info
BldgName string `bson:"w"`
BldgOwner string `bson:"o"`
BldgMaxTenant int `bson:"m"`
BldgNumTenant int `bson:"n"`
// Floors
BldgFloors []Floor `bson:"p"`
// Statistics
Created time.Time `bson:"z"`
}
Код:
func InsertFloor(database *mgo.Database, bldg_uuid string, fnum int) error {
fmt.Println(bldg_uuid)
fmt.Println(fnum) // Floor Number
var result Floor // result := Floor{}
database.C("buildings").Find(bson.M{"b": bldg_uuid}).Select(
bson.M{"p": bson.M{"$elemMatch": bson.M{"l": fnum}}}).One(&result)
fmt.Printf("AHA %s", result)
return errors.New("x")
}
Это не получается, независимо от того, как я пытаюсь запрос возвращает объект здания, а не объект этаж? Какие изменения мне нужно сделать, чтобы получить выборку и подсчет запросов, а не здания?
Это делается для того, чтобы проверить, существует ли Этаж внутри здания перед вставкой. Если есть лучший подход, я заменил бы меня тем лучше!
Спасибо!
ли мой ответ решить эту проблему? Если да, пожалуйста, примите, что это правильный ответ. – Pio
Я использовал конвейер, который был другим и быстрее, чем тот, который у вас был .. так не совсем, но достаточно близко. –