gopkg.in/rethinkdb/rethinkdb-go.v6@v6.2.2/query_manipulation.go (about) 1 package rethinkdb 2 3 import ( 4 p "gopkg.in/rethinkdb/rethinkdb-go.v6/ql2" 5 ) 6 7 // Row returns the currently visited document. Note that Row does not work within 8 // subqueries to access nested documents; you should use anonymous functions to 9 // access those documents instead. Also note that unlike in other drivers to 10 // access a rows fields you should call Field. For example: 11 // r.row("fieldname") should instead be r.Row.Field("fieldname") 12 var Row = constructRootTerm("Doc", p.Term_IMPLICIT_VAR, []interface{}{}, map[string]interface{}{}) 13 14 // Literal replaces an object in a field instead of merging it with an existing 15 // object in a merge or update operation. 16 func Literal(args ...interface{}) Term { 17 return constructRootTerm("Literal", p.Term_LITERAL, args, map[string]interface{}{}) 18 } 19 20 // Field gets a single field from an object. If called on a sequence, gets that field 21 // from every object in the sequence, skipping objects that lack it. 22 func (t Term) Field(args ...interface{}) Term { 23 return constructMethodTerm(t, "Field", p.Term_GET_FIELD, args, map[string]interface{}{}) 24 } 25 26 // HasFields tests if an object has all of the specified fields. An object has a field if 27 // it has the specified key and that key maps to a non-null value. For instance, 28 // the object `{'a':1,'b':2,'c':null}` has the fields `a` and `b`. 29 func (t Term) HasFields(args ...interface{}) Term { 30 return constructMethodTerm(t, "HasFields", p.Term_HAS_FIELDS, args, map[string]interface{}{}) 31 } 32 33 // Pluck plucks out one or more attributes from either an object or a sequence of 34 // objects (projection). 35 func (t Term) Pluck(args ...interface{}) Term { 36 return constructMethodTerm(t, "Pluck", p.Term_PLUCK, args, map[string]interface{}{}) 37 } 38 39 // Without is the opposite of pluck; takes an object or a sequence of objects, and returns 40 // them with the specified paths removed. 41 func (t Term) Without(args ...interface{}) Term { 42 return constructMethodTerm(t, "Without", p.Term_WITHOUT, args, map[string]interface{}{}) 43 } 44 45 // Merge merges two objects together to construct a new object with properties from both. 46 // Gives preference to attributes from other when there is a conflict. 47 func (t Term) Merge(args ...interface{}) Term { 48 return constructMethodTerm(t, "Merge", p.Term_MERGE, funcWrapArgs(args), map[string]interface{}{}) 49 } 50 51 // Append appends a value to an array. 52 func (t Term) Append(args ...interface{}) Term { 53 return constructMethodTerm(t, "Append", p.Term_APPEND, args, map[string]interface{}{}) 54 } 55 56 // Prepend prepends a value to an array. 57 func (t Term) Prepend(args ...interface{}) Term { 58 return constructMethodTerm(t, "Prepend", p.Term_PREPEND, args, map[string]interface{}{}) 59 } 60 61 // Difference removes the elements of one array from another array. 62 func (t Term) Difference(args ...interface{}) Term { 63 return constructMethodTerm(t, "Difference", p.Term_DIFFERENCE, args, map[string]interface{}{}) 64 } 65 66 // SetInsert adds a value to an array and return it as a set (an array with distinct values). 67 func (t Term) SetInsert(args ...interface{}) Term { 68 return constructMethodTerm(t, "SetInsert", p.Term_SET_INSERT, args, map[string]interface{}{}) 69 } 70 71 // SetUnion adds several values to an array and return it as a set (an array with 72 // distinct values). 73 func (t Term) SetUnion(args ...interface{}) Term { 74 return constructMethodTerm(t, "SetUnion", p.Term_SET_UNION, args, map[string]interface{}{}) 75 } 76 77 // SetIntersection calculates the intersection of two arrays returning values that 78 // occur in both of them as a set (an array with distinct values). 79 func (t Term) SetIntersection(args ...interface{}) Term { 80 return constructMethodTerm(t, "SetIntersection", p.Term_SET_INTERSECTION, args, map[string]interface{}{}) 81 } 82 83 // SetDifference removes the elements of one array from another and return them as a set (an 84 // array with distinct values). 85 func (t Term) SetDifference(args ...interface{}) Term { 86 return constructMethodTerm(t, "SetDifference", p.Term_SET_DIFFERENCE, args, map[string]interface{}{}) 87 } 88 89 // InsertAt inserts a value in to an array at a given index. Returns the modified array. 90 func (t Term) InsertAt(args ...interface{}) Term { 91 return constructMethodTerm(t, "InsertAt", p.Term_INSERT_AT, args, map[string]interface{}{}) 92 } 93 94 // SpliceAt inserts several values in to an array at a given index. Returns the modified array. 95 func (t Term) SpliceAt(args ...interface{}) Term { 96 return constructMethodTerm(t, "SpliceAt", p.Term_SPLICE_AT, args, map[string]interface{}{}) 97 } 98 99 // DeleteAt removes an element from an array at a given index. Returns the modified array. 100 func (t Term) DeleteAt(args ...interface{}) Term { 101 return constructMethodTerm(t, "DeleteAt", p.Term_DELETE_AT, args, map[string]interface{}{}) 102 } 103 104 // ChangeAt changes a value in an array at a given index. Returns the modified array. 105 func (t Term) ChangeAt(args ...interface{}) Term { 106 return constructMethodTerm(t, "ChangeAt", p.Term_CHANGE_AT, args, map[string]interface{}{}) 107 } 108 109 // Keys returns an array containing all of the object's keys. 110 func (t Term) Keys(args ...interface{}) Term { 111 return constructMethodTerm(t, "Keys", p.Term_KEYS, args, map[string]interface{}{}) 112 } 113 114 func (t Term) Values(args ...interface{}) Term { 115 return constructMethodTerm(t, "Values", p.Term_VALUES, args, map[string]interface{}{}) 116 } 117 118 // Object creates an object from a list of key-value pairs, where the keys must be strings. 119 func Object(args ...interface{}) Term { 120 return constructRootTerm("Object", p.Term_OBJECT, args, map[string]interface{}{}) 121 }