小编Hyl*_*ron的帖子

使用mongoose查询只获取一个子文档

我有一个类似的数据结构:

var GrandGrandChild = mongoose.Schema({
    attribute: String,
    id: Number
});

var GrandChild = mongoose.Schema({
    children: [GrandGrandChild],
    id: Number,
    irrelevantAttribute: String
});

var Child = mongoose.Schema({
    children: [GrandChild],
    id: Number,
    irrelevantAttribute2: String
});

var Parent = mongoose.Schema({
    children: [Child],
    id: Number,
    irrelevantAttribute3: String
});

var GrandParent = mongoose.Schema({
    children: [Parent],
    id: Number,
    irrelevantAttribute4: String
});
Run Code Online (Sandbox Code Playgroud)

这些是包含子文档的很多集合.请注意,ID对于其兄弟姐妹是唯一的,但对于具有相同模式的所有元素而言并非唯一.

因此,一个祖父母可以拥有身份0的父母,另一个祖父母也可以拥有身份0的父母,但是一个祖父母不能拥有2个身份0的父母.

保存的唯一模式是GrandParent模式,而mongoose/mongodb是这个祖父母的所有数据的一个很好的单个大文档.(正是我要找的)

所以这是我的问题:我有一个GrandParent ID,Parent ID,Child ID,GrandChildID和GrandGrandChild ID,我想以某种方式获得所有这些ID所指向的GrandGrandChild对象.

丑陋的方式是,但目前我唯一可以开始工作的方法是创建一个获取GrandParent这个大文档的查询,并手动循环遍历所有数组以找到正确的Parent,然后再循环找到正确的孩子,然后再循环找到合适的孙子,然后再循环,找到我需要的grandgrandchild.

我的问题是,如何在mongoose中编写一个只返回grandgrandchild文档的查询,或者只包含子属性的祖父文档,并且在子类属性中只包含引用的子对象所包含的父对象引用grandgrandchild对象的孙子对象,允许以下结果:

GRANDPARENT  PARENT      CHILD      GRANDCHILD   GRANDGRANDCHILD
grandparent.children[0].children[0].children[0].children[0].attribute;
Run Code Online (Sandbox Code Playgroud)

我希望有人可以帮我解决这个问题,我得到的是:

GrandParentModel.findOne(
    {
        "id" : 0,
        "children.id" : 0,
        "children.children.id" …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js

7
推荐指数
1
解决办法
9114
查看次数

当 minSdkVersion >= 26 时,为动态功能模块生成的绑定类出现 NullPointerException

我正在尝试将 MinSdkVersion 从 25 更新到 26,但在访问生成的绑定类的属性时收到 NullPointerExceptions。

以下代码片段显示哪行代码导致 NPE:

class DynamicActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val binding: ActivityDynamicBinding = DataBindingUtil.setContentView(
            this, R.layout.activity_dynamic)

        // Access a random binding to do a random thing
        binding.observableFieldsActivityButton.setOnClickListener { // This is the line it will crash
            Log.i("Tag", "I did a random thing, it works")
        }
        binding.viewmodelActivityButton.setOnClickListener {
            Log.i("Tag", "I did another random thing, it works")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

binding.observableFieldsActivityButton空。

这是 XML 文件:

class DynamicActivity : AppCompatActivity() { …
Run Code Online (Sandbox Code Playgroud)

android android-databinding dynamic-feature-module

7
推荐指数
1
解决办法
1067
查看次数