- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个具有以下形式的对象:
{
"_id": ObjectId("4fa43f4d1cf26a6a8952adf1"),
"userId": "1",
"facebookId": "1234",
"groups": [{
"groupName": "testGroup",
"members": [{
"memberFirstName": "userFirstName",
"memberLastName": "userLastName",
"memberDetails": {
"userId": "1",
"faceBookId": "1234"
}
}]
}]
}
这是一个为每个用户保存的集合——它的组,每个组包含组成员...所以“groups”键是一个数组(或列表),“members”键也是。(每个用户可以有多个群组,每个群组有多个群组成员)。
我很难用新的组成员更新对象,我想做的是:
db.collection.update({
userId: "1"
}, {
$push: {
"groups.members": {
membersDetails: {
userId: "2",
faceBookId: "54321"
},
memberFirstName: "UserB",
memberLastName: "UserBLastName"
}
}
});
但是好像不行。
出现以下错误:
can't append to array using string field name [members]
我也在尝试使用 Java 驱动程序,但似乎效果不佳。
DBObject query = new BasicDBObject("userId", "1");
DBObject newMemberDetailsObj = new BasicDBObject();
newMemberDetailsObj.put("userId", "2");
newMemberDetailsObj.put("faceBookId", "54321");
DBObject newMemberObj = new BasicDBObject();
newMemberObj.put("memberFirstName", "userB");
newMemberObj.put("memberLastName", "UserBLastName");
newMemberObj.put("memberDetails", newMemberDetailsObj );
DBObject update = new BasicDBObject("$push", new BasicDBObject("members", newMemberObj));
update.put("groupName", "testGroup");
DBObject maintain = new BasicDBObject("$push", new BasicDBObject("groups", update));
WriteResult newWr = coll.update(query, maintain);
最佳答案
这行不通,因为 groups
是一个数组,但您在引用其中的一个属性时就好像它是一个对象一样。您可以访问诸如 groups.0.members
或 groups.1.members
之类的内容,因为它们引用数组中的特定项目,但 groups
对象本身没有要追加的 members
属性。
我不完全确定你的更新需要做什么,但你可以在 groups.groupName
上添加一个过滤器到你的查询,然后执行 $push
使用 groups.$.members
仅将成员附加到匹配的组。
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator
关于json - 蒙戈数据库 : updating an objects using dot notation (multi-level object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456325/
我们使用 Ө-notation 来写插入排序的最坏情况运行时间。但是我无法将 Ө-notation 的属性与插入排序联系起来,为什么 Ө-notation 适用于插入排序。对于所有 n>=n0,插入排
我最近有幸学习了一点 Idris,我发现非常方便的一件事是 ! -notation ,这让我缩短了 do block 中的一元代码,例如 a' = 7.10)我们可以写 someFunction a
我试图理解 Big Theta 符号并遇到了一个例子: 我知道我们必须为这个符号找到两个常量 c1 和 c2,使得 c1*g(n)<= f(n) <= c2*g(n)。我的问题是他们如何找到这两个常量
我希望它的计算结果为 3,但得到了一个错误: Idris> :let x = Just 2 Idris> 1 + !x (input):1:3-4:When checking an applicati
这个问题已经有答案了: Accessing nested JavaScript objects and arrays by string path (45 个回答) 已关闭 5 年前。 我有一个像这样
Dev Bootcamp 的作业前练习之一是 RPN 计算器。我成功了,但想要重构反馈。非常感谢任何有助于使此代码更清晰的帮助。 class RPNCalculator def evaluate(
素描documentation据说点号和大括号符号可以相互混合。它甚至是一个 example可用: [[context.document currentPage] deselectAllLayers]
如何将这些 CocoaScript“大括号表示法”转换为 JavaScript“点表示法”语法? [fileManager createDirectoryAtPath: tmpFolder withI
只是想知道,例如在维基百科页面 Dijkstra's algorithm O(|E| + |V|log|V|) 中绝对值条的含义是什么 最佳答案 竖线表示 cardinality (或大小)一组。在
我正在处理一个使用系统匈牙利符号的遗留 COM C++ 项目。因为它是对遗留代码的维护,所以约定是以它编写的原始样式进行编码 - 我们的新代码不是这样编码的。所以我对改变这个标准或讨论我们过去的罪不感
我想在 Haskell 中按顺序组合两个 monad Action ,丢弃第二个产生的任何值,并将参数传递给这两个 Action 。目前我正在使用这样的do-block: ask = do res
如何将负数从中缀转换为后缀? 假设我有一个表达式 a = - b - (-c-d) 在我读到的某些地方,您可以将负数归为一类,例如 a = (-b) - (-c-d) 但在这里,如果我这样做,我会在后
我想知道是否有办法使用 2 个堆栈一次性解决中缀表达式?堆栈可以一个用于运算符,另一个用于操作数... shunt-yard算法求解的标准方法是将中缀表达式转换为后缀表达式(反向波兰)然后求解。我不想
我的任务是将一些 Python 代码转换为 Java。我遇到了一些我不熟悉的符号,似乎找不到任何信息。我猜这是因为我缺少关键字。 为了简单起见,我对代码进行了清理并硬编码了一些基本值。 index_t
我想知道是否有一种方法可以使用 2 个堆栈一次解决中缀表达式?堆栈可以是一个用于运算符,另一个用于操作数... shunt-yard算法求解的标准方法是将中缀表达式转换为后缀(逆向抛光),然后求解。我
do 表示法允许我们在没有过多嵌套的情况下表达 monadic 代码,因此 main = getLine >>= \ a -> getLine >>= \ b -> put
我正在学习 Haskell。 我正在尝试查找列表中的元素 as列表元素的总和 bs ,将元素作为元组返回: findSum2 :: [Int] -> [Int] -> [(Int,Int,Int)]
这个问题在这里已经有了答案: How to pass Scala array into Scala vararg method? (3 个回答) What does `:_*` (colon unde
我经常在教程中看到 m_ 前缀用于变量 (m_World,m_Sprites,...) 、示例等主要与游戏开发相关的代码。 为什么人们要给变量添加前缀m_? 最佳答案 这是定义作为成员变量的变量的典型
这个问题在这里已经有了答案: What is a non-capturing group in regular expressions? (17 个回答) 5年前关闭。 对于我的一门课,我必须描述以下
我是一名优秀的程序员,十分优秀!